【发布时间】:2013-04-21 00:33:47
【问题描述】:
我正在尝试从我的 python 脚本创建一个可执行文件。我的脚本运行良好,但冻结后,启动 .exe 给我以下错误:
http://www.bild.me/bild.php?file=4663406scipyerror.png
我正在使用 Python 3.2.3、Scipy 0.12.0b1、Numpy 1.7.0 和 Matplotlib 1.2.0(均为 32 位)。
关于如何解决这个问题的任何想法/提示?我的猜测是我必须在我的冻结脚本中手动包含一些东西,但我的猜测已经不多了:-(
我终于让它工作了,但我对我的解决方案非常不满意:
1) 将 SciPy 包中的 _odepack.pyd 和 odepack.py 复制到我的程序文件夹中
2) 在odepack.py 中将from . import _odepack 更改为import _odepack(否则会引发ValueError: Attempted relative import in non-package)
3) 在我的主要更改中将from scipy.integrate import odeint 更改为from odepack import odeint
现在它按预期工作,使用 cx_freeze 后它仍在工作。
仍然不知道为什么它以前不起作用:-(
感谢 ThomasK 将我推向正确的方向 :-)
【问题讨论】:
-
脚本的第 25 行是什么? vode 模块是什么形式的,你能在 build 目录的任何地方找到它吗?您确定使用的是最新版本的 cx_Freeze 吗?
-
@ThomasK 第 25 行是导入
from scipy.integrate import odeint。在构建目录中有 scipy.integrate._odepack.pyd,它是从 scipy/integrate 文件夹中复制而来的。我正在使用 cx_freeze 4.3.1,它似乎是最新版本。 -
但是没有
scipy.integrate.vode.pyd文件?您的系统上是否有任何vode.pyd文件?如果有,请尝试将其复制到 exe 旁边。 -
我从 exe 旁边的
scipy.integrate文件夹中复制了vode.pyd,没有运气。与将其重命名为 scipy.integrate.vode.pyd 相同(因为所有 *.pyd 都这样重命名)。 -
您看到的错误信息肯定还是一样?令人费解。
标签: python-3.x scipy cx-freeze