【发布时间】:2017-04-19 22:26:14
【问题描述】:
问题
尝试运行使用 cx_Freeze 构建的 .exe 时出现以下错误:
File
"C:\\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\scipy\__init__py", line 105 in <module>
from scipy.__config__ import show as show_config
ImportError: No module named 'scipy.__config__'
During handling of the above exception, another exception occurred:
...
File
"C:\\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\scipy\__init__py", line 105 in <module>
raise ImportError(msg)
ImportError: Error importing scipy: you cannot import scipy while being in scipy source directory; please exit the scipy source tree first, and relaunch your python interpreter.
我该如何解决这个问题?
附加信息
设置
- Windows 7 企业版 64 位
- WinPython-64bit-3.5.2.3Qt5(Python 3.5.2 64 位)
- cx_Freeze 5.0 (*)
- scipy 0.18.1
(*) 在 hooks.py 中带有pythoncom fix
setup.py:
import os
import sys
from cx_Freeze import setup, Executable
os.environ['TCL_LIBRARY'] = r"C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\tcl\tcl8.6"
os.environ['TK_LIBRARY'] = r"C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\tcl\tk8.6"
base = 'Console'
if sys.platform == 'win32':
base = 'Win32GUI'
options = {
'build_exe': {
'excludes': ['gtk', 'PyQt4', 'Tkinter'],
}
}
executables = [
Executable('GUI.py', base=base)
]
setup(name='GUI',
version='0.1',
description='GUI test',
executables=executables,
options=options
)
构建过程中的错误
无。
我还尝试了什么?
1) 尝试将'includes': ['scipy.__config__'] 添加到 setup.py。
- 结果:构建过程中出错
ImportError: No module named 'scipy.__config__'
2) 尝试将'packages': ['scipy'], 添加到 setup.py。
- 结果:构建过程中出错
ImportError: No module named 'scipy'
3) 将cx_Freeze/hooks.py 中的finder.IncludePackage("scipy.lib") 重命名为finder.IncludePackage("scipy._lib"),按照SO 问题“Cx_freeze ImportError no module named scipy”的回答中的说明+ 将'packages': ['scipy'], 添加到setup.py。
- 结果:没有构建时错误。尝试运行 .exe 时,它会给出
ImportError: No module named 'scipy.spatial.ckdtree' - 在
setup.py中也尝试了'includes': ['scipy.spatial.ckdtree'],但问题仍然存在。 -
构建输出有以下几行:
m scipy.spatial.cKDTree C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\scipy\spatial\cKDTree.cp35-win_amd64.pyd m scipy.spatial.ckdtree C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\scipy\spatial\ckdtree.cp35-win_amd64.pyd
【问题讨论】:
-
好的,看来问题已在“我还尝试了什么?”的步骤 3) 中解决。
ImportError: No module named 'scipy.spatial.ckdtree'-error 是由seaborn包引起的,故障排除将是一个不同的问题。
标签: python windows python-3.x scipy cx-freeze