Py2Exe“缺少模块”

2024-04-25 18:21:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Py2Exe将我的python项目转换为exe。值得注意的是,cxúu freeze抱怨同样的三个“丢失模块”,以及其他几十个模块。问题是,没有人知道如何解决这个问题。

我是在mswindowsxp32位(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上运行peachy,从python redstring.py运行,但是我无法将它编译成.exe。

到目前为止,我在import platformfrom platform import win32apiredstring.pysetup.py中尝试了import platformfrom platform import win32api和所有类似的操作,同时还通过设置文件中的py2exe选项导入了平台。


Tags: tofrompyimportbuilddistsetuppyd
2条回答

win32api和win32con是Mark Hammond的Python Windows扩展(也称为pywin32)的一部分。readline是一个模块,由一些与控制台交互的代码使用(如果有的话)。

readline和pywin32都是可选的模块/包,它们不是必需的,但在出现时将被使用。

总而言之-py2exe注意到这些模块/包被一些代码引用,这些代码将包含在您的exe中(它甚至提到引用这些模块/包的模块:cmd、code、pdb、platform)。 我希望你已经测试了你的脚本-在'未编译'的形式,如果它工作正常,那么你可以安全地忽略这些消息:它们只是警告。

未生成可执行文件的原因是setup()调用中缺少“console=[“redstring”]”或“windows=[“redstring”]”行。

所以,这些库可能从来没有安装过。Python可以是“包括电池”,但不能达到这个程度。然而,我之所以回答这个问题,是因为对某些人(包括我自己)来说,修复它并不是世界上最显而易见的事情。

您需要从Sourceforge安装win32api(或pywin32,正式名称为pywin32)(目前,请浏览文件以查找最新版本,作为README.txt的下载按钮链接),该文件也将解析win32con。(不幸的是,您目前无法从pip安装pywin32。)

readline is not compatible with Windows,但它要求它。实际上,您必须安装pyreadline,这是pip install pyreadline中最简单的。

这应该可以解决py2exe的所有这些问题。我仍然有麻烦,但这是不同的麻烦,所以这是一个不同的问题。

相关问题 更多 >