2013-03-20 104 views
1

我有一个非常简单的脚本,我用py2exe将它转换为exe格式。然后我将它移到了没有Python的Windows 7机器上。python修复由py2exe创建的独立exe文件,包括pyd/dll

当我运行它,我得到以下错误:

LoadLibrary(pythondll) failed
The specified module could not be found. C:\PYTHON27.DLL

我试图读取和测试,包括DLL,但没有工作过的一些代码。我怎样才能包括这个DLL?

如果有帮助,我的Python脚本只需要导入基本的东西,

import os 
import getpass 
import urllib2 
import os 
import re 
import time 
+0

我相信你仍然需要python来运行exe。 – nathancahill 2013-03-20 23:57:02

+0

也许我可以包括python27.dll?我看到的所有文档都是关于包括Windows的东西。 – 2013-03-20 23:58:05

+0

请任何人:]? – 2013-03-21 00:28:14

回答

0

你将不得不在同一目录分发DLL作为您的可执行文件,或把它放在环境PATH机器你在哪里想运行可执行文件。

+1

所以没有选择结合所有在1 exe文件? ): – 2013-03-21 00:34:09

0

这可能是由于安装了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:\Python27C:\Program Files\Mercurial\Python27中提取了32位和64位可执行文件。

要解决它,我只需卸载Mercurial。或者,您可以修改Python路径,以便py2exe不知道有关Mercurial安装的Python版本或任何其他不需要的Python安装。

相关问题