cx_freeze和scipy:“ImportError:无法导入名称vode”

时间:2013-04-26 18:40:17

标签: python-3.x scipy cx-freeze

我正在尝试从我的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.pydodepack.py复制到我的程序文件夹

2)在odepack.py中将from . import _odepack更改为import _odepack(否则会引发ValueError: Attempted relative import in non-package

3)在我的主要更改from scipy.integrate import odeintfrom odepack import odeint

现在它正在按预期工作,在使用cx_freeze之后它仍在工作。
仍然不知道为什么它以前不会起作用: - (

感谢ThomasK让我朝着正确的方向前进: - )

1 个答案:

答案 0 :(得分:2)

我终于通过在cx setup-file中指定“scipy.integrate.vode”作为包含来解决这个vode问题。这导致文件“scipy.integrate.vode.pyd”结束在build文件夹中。我在Windows上使用SciPy 0.11,Python 3.2.3和最新的cx。

但是手动将这样的“scipy.integrate.vode”文件添加到构建文件夹也不能解决问题,即使许多其​​他.pyd文件需要这样的手动包含修复程序,cx也找不到(并且上面的setup.py包含解决方案将不起作用)...

感谢分享你的苦恼和智慧,不会设法冻结我的程序其他意图...