Scipy 和 CX_freeze - 导入 scipy 时出错:在 scipy 源目录中时无法导入 scipy
Scipy and CX_freeze - Error importing scipy: you cannot import scipy while being in scipy source directory
我在使用 cx_freeze 和 scipy 编译 exe 时遇到问题。特别是,我的脚本使用
from scipy.interpolate import griddata
构建过程似乎成功完成,但是当我尝试 运行 已编译的 exe 时,我收到以下消息。
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
exec(code, m.__dict__)
File "gis_helper.py", line 13, in <module>
File "C:\Python27\lib\site-packages\scipy\__init__.py", line 103, 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 intepreter.
查看scipy\_init__.py文件后,有如下内容:
if __SCIPY_SETUP__:
import sys as _sys
_sys.stderr.write('Running from scipy source directory.\n')
del _sys
else:
try:
from scipy.__config__ import show as show_config
except ImportError:
msg = """Error importing scipy: you cannot import scipy while
being in scipy source directory; please exit the scipy source
tree first, and relaunch your python intepreter."""
raise ImportError(msg)
我不完全确定这里的问题是什么,尽管似乎抛出错误是因为 scipy 配置文件有问题。可能未包含在构建过程中。我是一个新手,希望对使用 cxfreeze 生成构建更有经验的人可以对此有所了解。
顺便说一下,正在使用的 scipy 是从二进制文件 here 安装的。
我遇到了同样的问题。我将此代码添加到 cx_freeze:
生成的 setup.py
import scipy
includefiles_list=[]
scipy_path = dirname(scipy.__file__)
includefiles_list.append(scipy_path)
然后,使用 includefiles_list
作为 build_exe 参数的一部分:
build_options = dict(packages=[], include_files=includefiles_list)
setup(name="foo", options=dict(build_exe=build_options))
我添加了同样的问题并使用 fepzzz 方法解决了它,并添加了一些丢失的包:
additional_mods = ['numpy.matlib', 'multiprocessing.process']
includefiles = [(r'C:\Anaconda3\Lib\site-packages\scipy')]
setup(xxx, options={'build_exe': {'includes': additional_mods, 'include_files': includefiles}})
并使用 5.0.2 版本的 cx-Freeze 包,解决了导入时的错误 multiprocessing.process
我在使用 cx_freeze 和 scipy 编译 exe 时遇到问题。特别是,我的脚本使用
from scipy.interpolate import griddata
构建过程似乎成功完成,但是当我尝试 运行 已编译的 exe 时,我收到以下消息。
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
exec(code, m.__dict__)
File "gis_helper.py", line 13, in <module>
File "C:\Python27\lib\site-packages\scipy\__init__.py", line 103, 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 intepreter.
查看scipy\_init__.py文件后,有如下内容:
if __SCIPY_SETUP__:
import sys as _sys
_sys.stderr.write('Running from scipy source directory.\n')
del _sys
else:
try:
from scipy.__config__ import show as show_config
except ImportError:
msg = """Error importing scipy: you cannot import scipy while
being in scipy source directory; please exit the scipy source
tree first, and relaunch your python intepreter."""
raise ImportError(msg)
我不完全确定这里的问题是什么,尽管似乎抛出错误是因为 scipy 配置文件有问题。可能未包含在构建过程中。我是一个新手,希望对使用 cxfreeze 生成构建更有经验的人可以对此有所了解。
顺便说一下,正在使用的 scipy 是从二进制文件 here 安装的。
我遇到了同样的问题。我将此代码添加到 cx_freeze:
生成的setup.py
import scipy
includefiles_list=[]
scipy_path = dirname(scipy.__file__)
includefiles_list.append(scipy_path)
然后,使用 includefiles_list
作为 build_exe 参数的一部分:
build_options = dict(packages=[], include_files=includefiles_list)
setup(name="foo", options=dict(build_exe=build_options))
我添加了同样的问题并使用 fepzzz 方法解决了它,并添加了一些丢失的包:
additional_mods = ['numpy.matlib', 'multiprocessing.process']
includefiles = [(r'C:\Anaconda3\Lib\site-packages\scipy')]
setup(xxx, options={'build_exe': {'includes': additional_mods, 'include_files': includefiles}})
并使用 5.0.2 版本的 cx-Freeze 包,解决了导入时的错误 multiprocessing.process