2014-11-11 3 views
8

Я пытаюсь преобразовать свой проект python в exe с помощью Py2Exe. Стоит отметить, что cx_freeze жалуется на те же три «недостающих модуля», а также несколько десятков других. Проблема в том, что никто не знает, как это решить.Py2Exe «Отсутствующие модули»

Я строил на 32-битной (Windows) Windows XP MS Windows XP.

C:\Documents and Settings\Jason\Desktop\redstring2>python setup.py py2exe 
running py2exe 
running build_py 
creating build 
creating build\lib 
copying redstring.py -> build\lib 

    3 missing Modules 
    ------------------ 
? readline       imported from cmd, code, pdb 
? win32api       imported from platform 
? win32con       imported from platform 
Building shared code archive 'dist\library.zip'. 
Copy c:\windows\system32\python34.dll to dist 
Copy C:\Python34\DLLs\select.pyd to dist\select.pyd 
Copy C:\Python34\DLLs\_ssl.pyd to dist\_ssl.pyd 
Copy C:\Python34\DLLs\_ctypes.pyd to dist\_ctypes.pyd 
Copy C:\Python34\DLLs\_lzma.pyd to dist\_lzma.pyd 
Copy C:\Python34\DLLs\_hashlib.pyd to dist\_hashlib.pyd 
Copy C:\Python34\DLLs\pyexpat.pyd to dist\pyexpat.pyd 
Copy C:\Python34\DLLs\_socket.pyd to dist\_socket.pyd 
Copy C:\Python34\DLLs\_bz2.pyd to dist\_bz2.pyd 
Copy C:\Python34\DLLs\unicodedata.pyd to dist\unicodedata.pyd 

My setup.py является следующим.

#!/usr/bin/python python 

from setuptools import setup 
import py2exe 

setup(name="Redstring", 
    version="2.0", 
    description="REDundant STRING generator", 
    author="MousePaw Labs", 
    url="http://www.mousepawgames.com/", 
    author_email="[email protected]", 
    data_files=[("", ["redstring.png", "redstring_interface.glade"])], 
    py_modules=["redstring"], 
    ) 

Это проект Python 3.4 с использованием GTK + 3 (встроенный в Glade). Он работает просто персик на Ubuntu и с python redstring.py, но я не могу заставить эту вещь скомпилировать файл .exe.

До сих пор я пытался import platform, from platform import win32api, и все, как и в redstring.py и setup.py, наряду с импортом платформы с помощью опций py2exe в файле настройки.

+0

Выполняется ли проект под окнами? – Eric

+0

Позитивный. python redstring.py в Windows XP cmd запускает его без каких-либо проблем. – CodeMouse92

+0

Вы пробовали это: http://stackoverflow.com/questions/10098444/py2exe-include-modules-when-should-they-be-managed-manually? – Eric

ответ

7

win32api и win32con являются частью расширений Windows Python Марка Хаммонда (aka pywin32). readline - это модуль, который используется (если присутствует) некоторым кодом, взаимодействующим с консолью.

Оба readline и pywin32 являются необязательными модулями/пакетами, которые не требуются, но будут использоваться, если они присутствуют.

В целом - py2exe отмечает, что на эти модули/пакеты ссылается некоторый код, который будет включен в ваш exe (он даже упоминает модули, которые ссылаются на эти мод/пакеты: cmd, code, pdb, platform). Надеюсь, вы протестировали свой скрипт - в форме «не скомпилированный», если он работает правильно, чем вы можете смело игнорировать эти сообщения: это только предупреждения.

Причина, по которой не существует исполняемого файла, заключается в том, что в вызове setup() отсутствует строка 'console = ["redstring"]' или 'windows = ["redstring"]'.

+0

Я протестировал полностью - сценарий не требовал их вообще, однако py2exe не создавал бы исполняемый файл, если только не имел их. – CodeMouse92

+1

А теперь я вижу проблему: вам не хватает строки 'console = [" redstring "] 'в вызове функции setup(). Это указывает исполняемый файл, который вы хотите создать. – theller

+0

Да, я тоже это заметил позже. Хороший улов. В моем случае это должно было быть «windows = [" redstring "] ', из-за того, что это GUI, но да. Если вы отредактируете свой ответ (так как, да, он работает с компилятором скриптов, но я пропустил эту строку, поэтому нет исполняемого файла), я приму ответ. – CodeMouse92

8

Итак, эти библиотеки никогда не были установлены для начала. Python может быть «включенными батареями», но не в такой степени. Тем не менее, я отвечаю на это, потому что исправление это не самая очевидная вещь в мире для некоторых (включая меня).

Вам необходимо установить win32api (или pywin32, как его официально называют) от Sourceforge (на данный момент просматривайте файлы для последней версии, так как кнопка «Загрузить» ссылается на README.txt). Это также решит win32con , (К сожалению, вы не можете установить pywin32 из pip в настоящий момент.)

readline is not compatible with Windows, но он просит его. Вам действительно нужно установить pyreadline, что проще всего с pip install pyreadline.

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