2015-06-07 1 views
2

У меня есть код python (2.7), который имеет gui (Tkinter) и другой модуль. Я пытался сделать его файлом .exe, но имел странные результаты. Ниже приведены два случая:py2exe exe закрывается сразу после запуска

  1. Нет модуль с именем py2exe: Я использую Canopy 64bit для создания питона сценариев. Поскольку это 64 бит, я загрузил 64-разрядную версию py2exe для python 2.7 и установлен. Во время установки программа py2exe автоматически видит мой путь навеса, и я проверяю, есть ли у меня модуль py2exe после установки. Я проверил и увидел, что папка py2exe и модуль находятся в Canopy/Libs. Таким образом, он выглядел так, как будто он был установлен правильно, но когда я перехожу в cmd, меняю каталог, а затем python myscript.py py2exe, он говорит no module named py2exe. Если я начинаю 64 бит IDLE и import py2exe, он импортирует.

  2. Поэтому я попытался установить 32-разрядную версию py2exe. Во время установки он видит C:/Python27, поэтому я устанавливаю его там, 64-разрядный IDLE не может импортировать, если я вызываю py2exe, но 32 бит может. С 32-разрядной версией py2exe, когда я делаю python myscript.py py2exe, он компилирует мой скрипт в файл .exe. Однако при двойном щелчке по файлу .exe открывается окно cmd и закрывается сразу после запуска.

Я проверил другие подобные темы здесь, но ни один из них не помог мне в этом, так как странно, что 64-разрядная установка не дает модуля с именем py2exe. Любая помощь будет оценена, спасибо заранее.

Примечание: У меня есть C:/Python27 в пути системных переменных и пути Canopy в моем пути переменных пользователя.

Обновление Случай 1: При запуске командной строки сени и компакт-диск оттуда, а затем следуют типичные шаги, py2exe начинает работать, но застревает на: MSVCP90.dll: No such file or directory и он выходит

Обновление: Оказывается, это касается моего импорта. Проблема возникает только при импорте matplotlib. С импортированным Tkinter, xlrd и numpy он работает без проблем, но когда я импортирую matplotlib, он дает мне эту ошибку в msvcp90.dll. Если я удалю все импорт matplotlib из моего gui, он компилируется, но когда я пытаюсь запустить .exe, он запускает cmd-окно, которое сразу же закрывается сразу после.

+0

Возможно, это связано с [Нет модуля с именем py2exe] (https://stackoverflow.com/questions/9559601/no-module-named-py2exe?rq=1). Посмотрите это и сообщите нам, какая у вас версия пакета py2exe? – smci

+0

Я делаю то же самое после обеда. – percusse

+0

Прежде всего, попробуйте запустить файл .exe через консоль cmd, а не дважды щелкнуть по нему. Таким образом, окно cmd не исчезнет, ​​и вы сможете увидеть, какую ошибку он выбрасывает, а затем опубликовать это. Тогда мы сможем помочь вам. –

ответ

0

AFAIK, py2exe оставляет некоторые DLL файлы позади. Их следует скопировать вручную в каталог dist. Я бы предложил запустить вашу компиляцию через Dependency Walker, чтобы узнать, что Dlls отсутствует.

http://www.dependencywalker.com/

5,2. Python 2.6, 2.7, 3.0, 3.1

Для Python 2.6 необходимая DLL-сеть называется MSVCR90.dll. Py2exe не является , способным автоматически включать эту DLL в ваш каталог dist, так что вы должны предоставить его сами.

Чтобы усложнить ситуацию, существует более одной версии этой DLL версии , каждая из которых имеет одинаковое имя файла. Вам нужна такая же версия, что и интерпретатор Python был скомпилирован с версией 9.0.21022.8. В оставшейся части этих инструкций наведите указатель мыши на файл dll (или исполняемый файл установщика vcredist_x86.exe) , чтобы подтвердить, какая версия у вас есть. Вам понадобится vcredist_x86.exe , который содержит распространяемый пакет Microsoft Visual C++ 2008 , опубликованный 29-11-2007, так что не VS2008 SP1 один (протестирован с Python 2.7.1).

http://www.py2exe.org/index.cgi/Tutorial

+0

Я загрузил и установил эту версию vcredist_x86.exe, и в учебнике py2exe мне предлагается указать некоторые параметры, чтобы py2exe мог распространять эти DLL. Параметр файла данных, который он мне сообщает, выглядит так: data_files = [(«Microsoft.VC90.CRT», glob (r'C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \ redist \ x86 \ Microsoft.VC90.CRT \ *. * '))], и у меня нет такого каталога в разделе Program Files. У меня есть Visual Studio 8, но не 9.0. Я полностью застрял. Спасибо за ваш ответ, и я буду признателен за дальнейшую помощь здесь. – Deniz

+0

извините за двойной пост, но py2exe говорит, что у меня должна быть копия этих dll в папках моей visual studio, если у меня есть права на их перераспределение. У меня есть папка VC в программных файлах (x86) под Microsoft Visual Studio 8, но у нее нет копий этих DLL, хотя я установил vcredist_x86 – Deniz

0

Попробуйте использовать 'setup.py' код ниже. Вы исключаете файл dll, который вызывает ошибку, и вам также необходимо импортировать модуль sip.

из distutils.core настройка импорта импорта py2exe

setup(console=['hello.py'], 
    options = { 
      "py2exe": { 
       "dll_excludes": ["MSVCP90.dll"], 
       "includes":["sip"] 
      } 
     }, 
) 

Для того, чтобы увидеть, что это проблема, запустите файл ех из терминала.

 Смежные вопросы

  • Нет связанных вопросов^_^