py2exe "No module named 'site'" 来自 Anaconda



我正试图使用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问题都有类似的"解决方案"。

最新更新