【问题标题】:cx_Freeze 5.0: ImportError: No module named 'scipy.__config__'cx_Freeze 5.0: ImportError: No module named 'scipy.__config__'
【发布时间】: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


【解决方案1】:

我想我有一个解决方案(不是最好的,但很有效)。转到scipy\spatial 目录(在build 目录内)并将文件从cKDTree.cp36-win_amd64.pyd 更改为ckdtree.cp36-win_amd64.pyd

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

大写字母是个问题。它对我有用。

【讨论】:

    猜你喜欢
    • 2011-10-19
    • 2017-04-15
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 2015-09-10
    • 2012-08-12
    • 2018-01-19
    相关资源
    最近更新 更多