这可能是由于安装了32位和64位Python以及路径导致的。
在输出仔细一看,从python setup.py py2exe
. . .
*** copy extensions ***
copying C:\Python27\DLLs\_hashlib.pyd -> C:\path\to\project\dist
copying C:\Python27\DLLs\_socket.pyd -> C:\path\to\project\dist
copying C:\Python27\DLLs\_ssl.pyd -> C:\path\to\project\dist
copying C:\Python27\DLLs\bz2.pyd -> C:\path\to\project\dist
copying C:\Python27\DLLs\select.pyd -> C:\path\to\project\dist
copying C:\Python27\DLLs\unicodedata.pyd -> C:\path\to\project\dist
copying C:\PythonEnvs\some_virtualenv\lib\site-packages\pyodbc-3.0.7-py2.7-win32.egg\pyodbc.pyd -> C:\path\to\project\dist
copying C:\PythonEnvs\some_virtualenv\lib\site-packages\win32\win32print.pyd -> C:\path\to\project\dist
*** copy dlls ***
copying C:\Windows\system32\python27.dll -> C:\path\to\project\dist
setting sys.winver for 'C:\path\to\project\dist\python27.dll' to 'ProjectNameHere'
copying C:\PythonEnvs\some_virtualenv\lib\site-packages\pywin32_system32\pywintypes27.dll -> C:\path\to\project\dist
copying C:\Windows\system32\CRYPT32.dll -> C:\path\to\project\dist
copying C:\PythonEnvs\some_virtualenv\lib\site-packages\py2exe-0.6.9-py2.7-win32.egg\py2exe\run.exe -> C:\path\to\project\dist\mlr_startup.exe
确保py2exe只从需要的地方拉。
在上面的功能示例中,py2exe从Python 2.7,C:\Python27
的系统安装中拉入。它也从当前的虚拟环境中拉入,C:\PythonEnvs\some_virtualenv\lib\site-packages
。这导致一个可执行的工作。
当我遇到这个问题时,我看到py2exe也从其他地方拉东西,这些地方有不兼容的Python版本。
例如,我有32位官方Python,然后安装了64位版本的Mercurial。 Mercurial安装了它自己的64位版本的Python,并且py2exe从C:\Python27
和C:\Program Files\Mercurial\Python27
中提取了32位和64位可执行文件。
要解决它,我只需卸载Mercurial。或者,您可以修改Python路径,以便py2exe不知道有关Mercurial安装的Python版本或任何其他不需要的Python安装。
我相信你仍然需要python来运行exe。 – nathancahill 2013-03-20 23:57:02
也许我可以包括python27.dll?我看到的所有文档都是关于包括Windows的东西。 – 2013-03-20 23:58:05
请任何人:]? – 2013-03-21 00:28:14