cx_Freeze和seaborn - ImportError:没有名为'scipy.spatial.ckdtree'的模块。

3

问题

某些情况下,当导入 seaborn 包并制作可执行文件(.exe) 时,会出现以下 ImportError 错误。如何解决?

Traceback (most recent call last):
  File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\cx_Fr
eeze\initscripts\__startup__.py", line 12, in <module>
    __import__(name + "__init__")
  File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\cx_Fr
eeze\initscripts\Console.py", line 21, in <module>
    scriptModule = __import__(moduleName)
  File "GUI.py", line 22, in <module>
    import seaborn as sns
  File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\seabo
rn\__init__.py", line 9, in <module>
    from .linearmodels import *
  File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\seabo
rn\linearmodels.py", line 8, in <module>
    from scipy.spatial import distance
  File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\scipy
\spatial\__init__.py", line 93, in <module>
    from .ckdtree import *
ImportError: No module named 'scipy.spatial.ckdtree'

附加信息

设置

  • Windows 7 Enterprise 64位
  • WinPython-64bit-3.5.2.3Qt5 (Python 3.5.2 64位)
  • cx_Freeze 5.0
  • scipy 0.18.1

    按照SO问题“Cx_freeze ImportError no module named scipy”答案中的指示,将cx_Freeze/hooks.py中的finder.IncludePackage("scipy.lib")重命名为finder.IncludePackage("scipy._lib")

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 = None

options = {
    'build_exe': {
        'excludes': ['gtk', 'PyQt4', 'Tkinter'],
        'packages': ['scipy'],
        'includes': ['scipy.spatial.ckdtree'],
    }
}


executables = [
    Executable('GUI.py', base=base)
]



setup(name='GUI',
      version='0.1',
      description='GUI test',
      executables=executables,
      options=options
      )

另请参阅相关问题:https://dev59.com/pZ3ha4cB1Zd3GeqPOxaM - Niko Pasanen
1个回答

6

尝试将cKDTree.cp35-win_amd64.pyd重命名为ckdtree.cp35-win_amd64.pyd。这在我的情况下有效。

该文件应该位于您的构建路径下,例如build\exe.win-amd64-3.5\scipy\spatial\


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接