1

我正在尝试使用标准从 Ubuntu 终端调用以下 Python 脚本

python rosen.py

但它失败了。我可以F5闲置,它工作正常,但从终端调用时失败。的代码rosen.py如下:

from scipy.optimize import fmin

def rosen(x):
    b=sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)
    print b
    return b

x0 = [1.3, 0.7, 0.8, 1.9, 1.2]
xopt = fmin(rosen, x0, xtol=1e-8)
print xopt

再次,在空闲运行时它工作正常,但是当从终端调用时它说 scipy 不存在......

我可以从终端或空闲运行以下 numpy 代码,它工作正常:

import numpy as np
a=np.sin(1)
print a

它将在终端窗口或空闲窗口中打印,具体取决于调用它的位置。

基本上,我怎样才能让 rosen.py 导入 SciPy 并在从 Ubuntu 终端调用时运行?

非常感谢你的帮助。

4

2 回答 2

1

你有

#!/usr/bin/python

在你的文件的顶部来识别python解释器的位置?并使您的脚本可执行

chmod +x rosen.py

然后任何一个命令都适用于我在 Ubuntu 下:

./rosen.py 

或者

python rosen.py 

chmod如果您希望能够在不python先在命令行上键入的情况下运行脚本,则 是可选的。python rosen.py将在不带 的情况下工作chmod

而且由于您已经在脚本中导入了 scipy,所以我不确定我是否理解问题的那一部分。

于 2012-06-06T18:31:14.063 回答
0

在我看来,您的版本idle指向的 python 实现与 PATH 中的第一个实现不同。试试这个(从命令行——不是python):

head -1 `which idle`

和:

which python

路径是否相同?如果没有,那可能是你的问题。要解决此问题,根据您的系统设置,您可以重新排序 PATH 以获取要调用的正确版本的 python,或者您可以在路径的早期某处创建指向正确 python 实现的符号链接。

于 2012-06-06T18:40:53.107 回答