Я обнаружил, что py2exe работает просто великолепно, если я комментирую часть своей программы, которая использует wxPython. Кроме того, когда я использую py2exe на 'простом' образце, который идет с его загрузкой (т.е. в Python26\Lib\site-packages\py2exe\samples\simple), я получаю это сообщение об ошибке:
*** finding dlls needed ***
error: MSVCP90.dll: No such file or directory
, Таким образом, что-то о wxPython заставляет py2exe думать, что мне нужен DLL Visual Studio 2008. У меня нет VS2008 и все же моих работ программы отлично как каталог модулей Python. Я нашел копию MSVCP90.DLL в сети, установил его в Python26/DLLs, и py2exe теперь хорошо работает.
я все еще не понимаю, куда эта зависимость прибыла из, так как я могу выполнить свой код отлично хорошо без py2exe. Это является также раздражающим, который py2exe не дал мне, сообщение об ошибке как он сделало с test_wx.py образцом.
Дальнейшее обновление: Когда я пытался выполнить вывод от py2exe на другом ПК, я обнаружил, что этому нужно было установить MSVCR90.DLL; таким образом, если Ваш целевой ПК не имеет Visual C++ 2008, уже установленный, я рекомендую, чтобы Вы загрузили и установили Microsoft Visual C++ Распространяемый Пакет 2008 года .
Вывод говорит использование WX. Попытайтесь выполнить py2exe со своим сценарием, определенным как приложение для GUI вместо консоли. Если я не ошибаюсь, который имеет тенденцию вызывать проблемы с py2exe.
Я включил это во все свои сценарии setup.py:
distutils.core.setup(
options = {
"py2exe": {
"dll_excludes": ["MSVCP90.dll"]
}
},
...
)
Это хранит py2exe тихо, но вам все равно нужно убедиться, что dll находится на компьютере пользователя.
import sys
sys.path.append('c:/Program Files/Microsoft Visual Studio 9.0/VC/redist/x86/Microsoft.VC90.CRT')
Похоже, это зависимость только для Python 2.6. Я не получал эту ошибку в версии 2.5, но после обновления я получаю.
В этой цепочке писем рассказывается, почему существует проблема и как ее исправить:
http://www.nabble.com/ py2exe, -Py26, -wxPython-and-dll-td20556399.html
Мне не хотелось устанавливать vcredist. Мое приложение в настоящее время не требует установки и может быть запущено не администраторами, и я не хочу терять такое поведение. Поэтому я последовал рекомендациям в ссылках и получил необходимые Microsoft.VC90.CRT.manifest и msvcr90.dll, установив Python «только для этого пользователя». Мне также понадобился файл msvcp90.dll, который я нашел в папке WinSxS установки Python 2.6 для всех пользователей. Поскольку у меня уже было два из трех, я включил msvcm90. dll, чтобы предотвратить будущие ошибки, хотя я не получал никаких немедленных ошибок, когда оставил его. Я поместил манифест и три библиотеки DLL в папку libs, используемую моим замороженным приложением.
Трюк, который мне пришлось выполнить, заключался в том, чтобы добавить дополнительную копию манифеста и msvcr90.dll в корень папки моего приложения рядом с py2exe. сгенерированный исполняемый файл. Эта копия DLL используется для начальной загрузки приложения, но тогда кажется, что она просматривает только папку libs.
Надеюсь, что это открытие поможет кому-то еще.
Кроме того, у меня была такая же проблема, когда py2exe регистрировал файл. реальное сообщение об ошибке. Затем я понял, что stderr не перенаправляется в мой файл журнала. Добавьте "> build.log 2> & 1" в командную строку, в которой вы вызываете py2exe.
Я поместил манифест и три библиотеки DLL в папку libs, используемую моим замороженным приложением.Трюк, который мне пришлось выполнить, заключался в том, чтобы добавить дополнительную копию манифеста и msvcr90.dll в корень папки моего приложения рядом с py2exe. сгенерированный исполняемый файл. Эта копия DLL используется для начальной загрузки приложения, но тогда кажется, что она просматривает только папку libs.
Надеюсь, что это открытие поможет кому-то другому.
Кроме того, у меня была такая же проблема с записью py2exe в журнал. реальное сообщение об ошибке. Затем я понял, что stderr не перенаправляется в мой файл журнала. Добавьте "> build.log 2> & 1" в командную строку, в которой вы вызываете py2exe.
Я поместил манифест и три библиотеки DLL в папку libs, используемую моим замороженным приложением.Трюк, который мне пришлось выполнить, заключался в том, чтобы добавить дополнительную копию манифеста и msvcr90.dll в корень папки моего приложения рядом с py2exe. сгенерированный исполняемый файл. Эта копия DLL используется для начальной загрузки приложения, но тогда кажется, что она просматривает только папку libs.
Надеюсь, что это открытие поможет кому-то другому.
Кроме того, у меня была такая же проблема с записью py2exe в журнал. реальное сообщение об ошибке. Затем я понял, что stderr не перенаправляется в мой файл журнала. Добавьте "> build.log 2> & 1" в командную строку, в которой вы вызываете py2exe.
dll в корне папки моего приложения рядом с исполняемым файлом, созданным py2exe. Эта копия DLL используется для начальной загрузки приложения, но тогда кажется, что она просматривает только папку libs.Надеюсь, что это открытие поможет кому-то другому.
Кроме того, у меня была такая же проблема с записью py2exe в журнал. реальное сообщение об ошибке. Затем я понял, что stderr не перенаправляется в мой файл журнала. Добавьте "> build.log 2> & 1" в командную строку, в которой вы вызываете py2exe.
dll в корне папки моего приложения рядом с исполняемым файлом, созданным py2exe. Эта копия DLL используется для начальной загрузки приложения, но тогда кажется, что она просматривает только папку libs.Надеюсь, что это открытие поможет кому-то другому.
Кроме того, у меня была такая же проблема с записью py2exe в журнал. реальное сообщение об ошибке. Затем я понял, что stderr не перенаправляется в мой файл журнала. Добавьте "> build.log 2> & 1" в командную строку, в которой вы вызываете py2exe.
t перенаправляется в мой файл журнала. Добавьте "> build.log 2> & 1" в командную строку, в которой вы вызываете py2exe. t перенаправляется в мой файл журнала. Добавьте "> build.log 2> & 1" в командную строку, в которой вы вызываете py2exe.Просто для вашей информации, для меня это сработало, чтобы скопировать файлы
Microsoft.VC90 .CRT.manifest msvcr90.dll
в каталог с .exe на компьютере пользователя (у которого не установлен распространяемый пакет Python или VC).
Спасибо за все подсказки!