我正在尝试使用 py2exe 在带有 Anaconda(Python 3.4)的 64 位 Windows 7 上为我的一个依赖于许多库的项目构建可执行文件。一些更复杂的包括 vispy (pyopengl)、PyQt4、numba 和 scipy。我一直在逐步解决各种错误以尝试获得一个有效的可执行文件,但是遇到了一个没有明确前进方向的路障。目前,py2exe 命令已完成,但在运行 exe 时出现以下错误:
...
from numba import jit
File "C:\Anaconda3\envs\sift_py2exe\lib\site-packages\numba\__init__.py", line
13, in <module>
from .pycc.decorators import export, exportmany
File "C:\Anaconda3\envs\sift_py2exe\lib\site-packages\numba\pycc\__init__.py",
line 12, in <module>
from .cc import CC
File "C:\Anaconda3\envs\sift_py2exe\lib\site-packages\numba\pycc\cc.py", line
4, in <module>
from distutils.command import build_ext
File "C:\Anaconda3\envs\sift_py2exe\lib\distutils\command\build_ext.py", line
17, in <module>
from site import USER_BASE
ImportError: No module named 'site'
C:\Anaconda3\envs\sift_py2exe\Lib
我可以通过在我的主脚本中添加目录来做一个小的解决方法sys.path
,但我怀疑这对我以后会有帮助。更不用说在那之后我有更多的 scipy DLL 问题。
以下是我的 setup.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 作为快速解决方法,因为我无法让它以任何正常方式工作。