0

我正在尝试使用 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 作为快速解决方法,因为我无法让它以任何正常方式工作。

4

1 回答 1

0

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

于 2015-12-14T20:50:51.237 回答