我试图使用Py2Exe将我的python项目转换为exe。值得注意的是,cx_freeze抱怨同样的三个"缺少模块"以及其他几十个模块。问题是,没有人知道如何解决这个问题。
我在MS Windows XP 32位(VirtualBox)上构建。
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
我的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="info@mousepawgames.com",
data_files=[("", ["redstring.png", "redstring_interface.glade"])],
py_modules=["redstring"],
)
这是一个使用GTK + 3(内置Glade)的Python 3.4项目。它在Ubuntu和python redstring.py上运行起来很好,但是我无法将其编译成.exe。
到目前为止,我在import platform
和from platform import win32api
中尝试了redstring.py
,setup.py
等所有内容,并在设置文件中通过py2exe选项导入平台。< / p>
答案 0 :(得分:8)
因此,从来没有安装过这些库。 Python可能包括电池和#34;但不是这个程度。但是,我之所以回答这个问题,是因为修复它并不是世界上最明显的事情(包括我自己)。
您需要从Sourceforge安装win32api(或正式调用的pywin32)(此时,浏览文件以获取最新版本,因为“下载”按钮链接到README.txt)这将解决win32con也是。 (不幸的是,目前你无法从pip安装pywin32。)
readline is not compatible with Windows,但它要求它。实际上你必须安装pyreadline,这是pip install pyreadline
最容易的。
这应解决py2exe的所有问题。我仍然遇到麻烦,但遇到了不同的麻烦,所以这是一个不同的问题。
答案 1 :(得分:8)
win32api和win32con是Mark Hammond的Python Windows扩展(又名pywin32)的一部分。 readline是一些与控制台交互的代码使用(如果存在)的模块。
readline和pywin32都是可选的模块/包,不是绝对必需的,但会在使用时使用。
总而言之 - py2exe注意到这些模块/包被一些代码引用,这些代码将包含在你的exe中(它甚至提到了引用这些mod /包的模块:cmd,code,pdb,platform)。 我希望你已经测试了你的脚本 - 以'非编译'形式,如果它正常工作,你可以安全地忽略这些消息:它们只是警告。
没有构建可执行文件的原因是setup()调用中缺少'console = [“redstring”]'或'windows = [“redstring”]'这一行。