Тому, как я отлаживаю py2exe 'приложение, не удалось инициализировать правильно' ошибку?

Любой из первых двух был бы приемлем для меня. Я избежал бы последнего, потому что относительно легко представить ошибку путем помещения пространства между кавычками. Эту конкретную ошибку было бы трудно найти наблюдением. Не принимая опечаток, все семантически эквивалентны.

[РЕДАКТИРОВАНИЕ]

кроме того, Вы могли бы хотеть всегда использовать или string или String для непротиворечивости, но это - просто я.

7
задан soapergem 20 July 2009 в 15:17
поделиться

5 ответов

Обратите внимание, что существует более поздняя версия распространяемого пакета Visual C ++ 2008: SP1 . Однако как SP1, так и более ранняя версия не устанавливают библиотеки DLL в путь. Как говорится на странице загрузки (выделено мной):

Этот пакет устанавливает среду выполнения компоненты C Runtime (CRT), Стандартный C ++, ATL, MFC, OpenMP и Библиотеки MSDIA. Для библиотек, которые поддержка модели параллельного развертывания (CRT, SCL, ATL, MFC, OpenMP) они установил в родную сборку кеш, также называемый папкой WinSxS , на версии операционной системы Windows которые поддерживают параллельные сборки.

Вероятно, вы найдете эти файлы в папке % WINDIR% \ WinSxS , а не в пути. Я думаю, вам нужно включить информацию из манифеста соответствующие библиотеки DLL (находятся в % WINDIR% \ WinSxS \ Manifests ) в ваш setup.py . я добавил следующий раздел:

<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.VC90.CRT"
            version="9.0.30729.4918"
            processorArchitecture="X86"
            publicKeyToken="1fc8b3b9a1e18e3b"
            language="*"
        />
    </dependentAssembly>
</dependency>

сразу после существующего раздела и перестроил exe: он работал без проблем. Примечание: в зависимости от того, какую именно версию файлов Visual C ++ вы установили, приведенная выше информация может быть неточной. Посмотрите на манифесты в вашей системе и используйте правильную версию , publicKeyToken и т. Д.

В качестве альтернативы посмотрите этот ответ , чтобы узнать, как развернуть библиотеки DLL с ваше приложение (в отличие от предположения, что они уже существуют в целевой системе). О ... Я вижу, вы задали тот первоначальный вопрос; -)

10
ответ дан 6 December 2019 в 23:11
поделиться

Раньше я использовал py2exe и никогда не сталкивался с подобной ситуацией ....

Однако похоже, что отсутствие зависимостей - ваша проблема .....

Работает ли упакованная программа на вашем компьютере, но не работает на других?

Если да, запустите упакованное приложение в DEPENDS (обходчик зависимостей) на обеих машинах и сравните, чтобы определить, какие пакеты не были включены.

Удачи

0
ответ дан 6 December 2019 в 23:11
поделиться

Вы уверены, что предоставляете те же библиотеки DLL, что и используемая wxPython.

DLL-библиотеки vc ++, используемые wxpython, можно загрузить со страницы загрузки wxpython. Вы пробовали эти?

0
ответ дан 6 December 2019 в 23:11
поделиться

Вы не должны копировать ВСЕ файлы .dll, на которые он жалуется! Некоторые из них являются системными файлами Windows и находятся в нужных местах системы. Если вы скопируете их в папку dist, все будет работать неправильно.

В общем, вы хотите копировать только файлы .dll, специфичные для вашего приложения. Не системные .dll. В некоторых ситуациях вам может потребоваться включить vcredist_xx.exe в установщик, чтобы получить среду выполнения MSVC в системе. Вы никогда не должны пытаться отправлять эти файлы .dlls в "сыром виде". Используйте пакет redist, это сэкономит ваше время и нервы.

Вы пробовали следовать указаниям здесь: http://wiki.wxpython.org/SmallApp ?

0
ответ дан 6 December 2019 в 23:11
поделиться

Ваш вопрос: Как отлаживать py2exe

Вот совет:

Что касается вашей конкретной проблемы, я ожидаю, что вы найти решение в этом более полном потоке, имеющем дело с той же проблемой:

py2exe не может создать исполняемый файл

1
ответ дан 6 December 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: