我正试图使用py2exe在64位Windows 7上用Anaconda(Python 3.4)为我的一个依赖于许多库的项目构建一个可执行文件。一些更复杂的包括vispy(pyopengl)、PyQt4、numba和scipy。我一直在经历各种错误,试图获得一个有效的可执行文件,但遇到了一个没有明确前进道路的障碍。目前,py2exe命令已经完成,但我在运行exe时收到以下错误:
...
from numba import jit
File "C:Anaconda3envssift_py2exelibsite-packagesnumba__init__.py", line
13, in <module>
from .pycc.decorators import export, exportmany
File "C:Anaconda3envssift_py2exelibsite-packagesnumbapycc__init__.py",
line 12, in <module>
from .cc import CC
File "C:Anaconda3envssift_py2exelibsite-packagesnumbapycccc.py", line
4, in <module>
from distutils.command import build_ext
File "C:Anaconda3envssift_py2exelibdistutilscommandbuild_ext.py", line
17, in <module>
from site import USER_BASE
ImportError: No module named 'site'
我可以通过在主脚本中的sys.path
中添加C:Anaconda3envssift_py2exeLib
目录来完成一个小的变通方法,但我怀疑这对我以后会有多大帮助。更不用说,在那之后我遇到了更多棘手的DLL问题。
以下是我的设置的相关部分.py:
try:
import py2exe
from llvmlite.binding.ffi import _lib_dir, _lib_name
kwargs["data_files"] = [('.', [os.path.join(_lib_dir, _lib_name), os.path.join(_lib_dir, "MSVCP120.dll"), os.path.join(_lib_dir, "MSVCR120.dll")])]
kwargs["console"] = [{
'script': 'cspov/__main__.py',
'dest_base': "SIFT",
}]
kwargs["options"] = {'py2exe': {"includes": ["vispy.app.backends._pyqt4", "PyQt4.QtNetwork"]}}
except ImportError:
print("'py2exe' and/or 'llvmlite' not available")
我尝试在setup.py中添加"Lib"目录,然后包括"site",但它找不到模块。有什么想法吗?谢谢
附带说明:我使用llvmlite中的Microsoft DLL作为快速解决方法,因为我无法使其以任何正常方式工作。
这不是我所希望的答案,但当我切换到pyinstaller时,我能够获得一个可运行的可执行文件。我看到的与我的问题相关的所有其他SO问题都有类似的"解决方案"。