使用py2exe的scipy脚本

时间:2015-06-10 11:20:01

标签: python python-2.7 py2exe

我在通过numpy导出我的脚本(使用scipypy2exe库)时遇到了这个问题:

Traceback (most recent call last):
File "imPok.py", line 3, in <module>
File "scipy\misc\__init__.pyc", line 49, in <module>
File "scipy\special\__init__.pyc", line 603, in <module>
File "scipy\special\basic.pyc", line 18, in <module>
File "scipy\special\orthogonal.pyc", line 101, in <module>
File "scipy\linalg\__init__.pyc", line 188, in <module>
File "scipy\linalg\_decomp_update.pyc", line 12, in <module>
File "scipy\linalg\_decomp_update.pyc", line 10, in __load
File "scipy/linalg/_decomp_update.pyx", line 1, in init scipy.linalg._decomp_update (scipy\linalg\_decomp_update.c:35768)
ImportError: No module named cython_blas

尝试:

  • 安装cython - 没有用
  • 删除scipy依赖项 - 这是有效的,即麻烦在scipypy2exe之间合作。
  • 应用this question的解决方案 - 不使用

问题:

  • 我该怎么做才能做到这一点?
  • 我应该/不应该做些什么来避免这个问题?

附录

这些是有问题的路线:

from scipy.misc import imread
import numpy as np

我实际上还没有要求scipy.linalgscipy.special,而py2exe却想要它们。

2 个答案:

答案 0 :(得分:5)

我今天遇到了这个问题,并从here找到了更全面的解决方案。

opts = {"py2exe": {
    "includes": ['scipy', 'scipy.integrate', 'scipy.special.*','scipy.linalg.*']}}

然后,在您的setup.py脚本中,使用:

setup(options=opts,windows=['script.py'])

答案 1 :(得分:3)

scipy.misc必须以scipy.linalg.cython_blas作为依赖项。要解决此问题,请在py2exe安装脚本中的“options&gt; include”级别包含以下包:

scipy.linalg.cython_blas