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

py2exe "No module named 'site'" from Anaconda

我正在尝试使用 py2exe 在 64 位 Windows 7 上使用 Anaconda (Python 3.4) 为我的一个依赖大量库的项目构建可执行文件。一些更复杂的包括 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 作为快速解决方法,因为我无法以任何正常方式让它工作。

这不是我希望得到的答案,但当我切换到 pyinstaller 时,我能够获得一个工作的可执行文件。我看到的与我的问题相关的所有其他 SO 问题都有类似的 "solutions".