来自 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".
我正在尝试使用 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".