Любой из первых двух был бы приемлем для меня. Я избежал бы последнего, потому что относительно легко представить ошибку путем помещения пространства между кавычками. Эту конкретную ошибку было бы трудно найти наблюдением. Не принимая опечаток, все семантически эквивалентны.
[РЕДАКТИРОВАНИЕ]
кроме того, Вы могли бы хотеть всегда использовать или string
или String
для непротиворечивости, но это - просто я.
Обратите внимание, что существует более поздняя версия распространяемого пакета 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 с ваше приложение (в отличие от предположения, что они уже существуют в целевой системе). О ... Я вижу, вы задали тот первоначальный вопрос; -)
Раньше я использовал py2exe и никогда не сталкивался с подобной ситуацией ....
Однако похоже, что отсутствие зависимостей - ваша проблема .....
Работает ли упакованная программа на вашем компьютере, но не работает на других?
Если да, запустите упакованное приложение в DEPENDS (обходчик зависимостей) на обеих машинах и сравните, чтобы определить, какие пакеты не были включены.
Удачи
Вы уверены, что предоставляете те же библиотеки DLL, что и используемая wxPython.
DLL-библиотеки vc ++, используемые wxpython, можно загрузить со страницы загрузки wxpython. Вы пробовали эти?
Вы не должны копировать ВСЕ файлы .dll, на которые он жалуется! Некоторые из них являются системными файлами Windows и находятся в нужных местах системы. Если вы скопируете их в папку dist, все будет работать неправильно.
В общем, вы хотите копировать только файлы .dll, специфичные для вашего приложения. Не системные .dll. В некоторых ситуациях вам может потребоваться включить vcredist_xx.exe в установщик, чтобы получить среду выполнения MSVC в системе. Вы никогда не должны пытаться отправлять эти файлы .dlls в "сыром виде". Используйте пакет redist, это сэкономит ваше время и нервы.
Вы пробовали следовать указаниям здесь: http://wiki.wxpython.org/SmallApp ?
Ваш вопрос: Как отлаживать py2exe
Вот совет:
Что касается вашей конкретной проблемы, я ожидаю, что вы найти решение в этом более полном потоке, имеющем дело с той же проблемой: