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

呼び出された場所に応じて、ターミナル ウィンドウまたはアイドル ウィンドウに出力されます。

基本的に、Ubuntuターミナルから呼び出されたときにrosen.pyにSciPyをインポートして実行させるにはどうすればよいですか??

助けてくれてありがとう。

4

2 に答える 2

1

ありますか

#!/usr/bin/python

ファイルの上部にある python インタープリターの場所を特定するには? そして、スクリプトを実行可能にしました

chmod +x rosen.py

次に、どちらのコマンドもUbuntuで機能します。

./rosen.py 

また

python rosen.py 

(コマンドラインで最初にchmod入力せずにスクリプトを実行できるようにする場合は、オプションです。 はなくても機能します)pythonpython rosen.pychmod

また、スクリプトに scipy を既にインポートしているため、質問のその部分を理解しているかどうかはわかりません。

于 2012-06-06T18:31:14.063 に答える
0

idleのバージョンが、PATHの最初にあるものとは異なるPython実装を指しているように見えます。これを試してください(コマンドラインから-Pythonではありません):

head -1 `which idle`

と:

which python

パスは同じですか?そうでない場合、それはおそらくあなたの問題です。これを修正するには、システム設定に応じて、PATHを並べ替えて、呼び出されるPythonの正しいバージョンを取得するか、パスの非常に早い段階で正しいpython実装へのシンボリックリンクを作成します。

于 2012-06-06T18:40:53.107 に答える