【问题标题】:cx_Freeze and seaborn - ImportError: No module named 'scipy.spatial.ckdtree'cx_Freeze 和 seaborn - ImportError: No module named 'scipy.spatial.ckdtree'
【发布时间】:2016-12-05 14:59:59
【问题描述】:

问题

由于某种原因,在导入 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 企业版 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
      )

【问题讨论】:

标签: python windows scipy seaborn cx-freeze


【解决方案1】:

尝试将cKDTree.cp35-win_amd64.pyd 重命名为ckdtree.cp35-win_amd64.pyd。这适用于我的情况。

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

【讨论】:

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