【发布时间】: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