cx_Freeze 5.0:ImportError:没有名为'scipy .__ config__'的模块

问题

尝试运行使用cx_Freeze构build的.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. 

我怎么能解决这个问题?

从错误消息的屏幕截图

附加信息

build立

  • 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修复

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 ) 

构build期间出现错误

没有。

我还试过了什么?

1)试图添加'includes': ['scipy.__config__']到setup.py。

  • 结果:构build时出错ImportError: No module named 'scipy.__config__'

2)试图添加'packages': ['scipy'],到setup.py。

  • 结果:构build期间出错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

Solutions Collecting From Web of "cx_Freeze 5.0:ImportError:没有名为'scipy .__ config__'的模块"

我想我有一个解决方案(不是最大的,但它的工作原理)。 转到scipy\spatial目录(在build目录中),将文件从cKDTree.cp36-win_amd64.pydckdtree.cp36-win_amd64.pyd

注意:您的文件名可能略有不同,具体取决于哪个python版本,但主要的是在文件名中使用小写的kdt

大写字母是问题。 它为我工作。