2011-01-02 25 views
57

時にPYTHONPATHを追加します。私は自分の環境変数に追加することはできません。なぜなら、私が実行しているプロジェクトに基づいて変更を加えたいからです。スクリプトを実行しているときにPYTHONPATHを変更する方法はありますか?注:私はPYTHONPATH変数も持っていないので、このスクリプトを実行している間にそれを上書きすることを心配する必要はありません。Pythonは、私が実行したいコマンド・ライン・モジュールの実行

答えて

91

Mac/Linuxの場合;

PYTHONPATH=/foo/bar/baz python somescript.py somecommand 

Windowsの場合は、ラッパーを設定してください。pythonpath.bat;

@ECHO OFF 
setlocal 
set PYTHONPATH=%1 
python %2 %3 
endlocal 

pythonpath.batのようなスクリプトファイル。

pythonpath.bat /foo/bar/baz somescript.py somecommand 
+0

内の機能を実行するために、これを試してください - 感謝。しかし、私はコマンドプロンプトからスクリプトを実行している間にそれをどうやって行うことができますか?私は、Pythonを実行していない、ものをインポートし、手動でそれを実行しています。 – orokusaki

+0

Mac/Linuxでは 'PYTHONPATH =/foo/bar python somescript.py somecommand'を実行します。 – ismail

+0

私は' python -c "import sys; sys.path.append( '/ my/dir')' 'を実行してから' python myscript.py mycommand'を実行しますが、明らかに最初のインタープリタセッションから次のインタープリタセッションへのパスは共有されません。ああ、ちょうどあなたの次のコメントを見て、今しよう... WinXPで動作しませんでした。 – orokusaki

38
import sys 
sys.path.append('your certain directory') 

基本的のsys.pathはPythonのモジュールのすべての検索パスを持つリストです。インタプリタによって初期化されます。 PYTHONPATHの内容は自動的にそのリストの最後に追加されます。

+8

またはsys.path.insert(0、 '/ some/directory')を使用してパスの前に配置します。これにより、すでにpythonpath上にある可能性のある他のものを上書きすることができます。 – sienkiew

+0

私はpydev-eclipse IDEの外でunintestestを実行するためにこの答えを使用しました。 – LAL

+0

'Windowsのsys.path.append(r'D:\ PyCharmProjects \ cheese_shoppe ')'の例です。 –

6

あなたはbashのように、POSIX準拠のシェルからコマンドを実行している場合、あなたはこのような環境変数を設定することができますが:

PYTHONPATH="/path/to" python somescript.py somecommand 

が1行にすべてのなら、PYTHONPATH環境値のみに適用されますその1つのコマンド。

$ echo $PYTHONPATH 

$ python -c 'import sys;print("/tmp/pydir" in sys.path)' 
False 
$ PYTHONPATH=/tmp/pydir python -c 'import sys;print("/tmp/pydir" in sys.path)' 
True 
$ echo $PYTHONPATH 
+0

私が探していたもの、ありがとうございました。何らかの理由で 'python -c 'import sys; sys.path.insert(0、' my/path '); import mymodule' 'が動作しませんでした。 –

-1

これは、Windows用です:たとえば

、私は自分のデスクトップ上の "mygrapher" という名前のフォルダを持っています。内部には、メインファイル "grapherMain.py"が必要とするPythonファイルを含む "計算"と "グラフ"というフォルダがあります。また、 "graphing"には "grapherMain.py"が格納されています。ファイルを移動せずにすべてを実行するには、バッチスクリプトを作成できます。このバッチファイルを "rungraph.bat"としましょう。

@ECHO OFF 
setlocal 
set PYTHONPATH=%cd%\grapher;%cd%\calculation 
python %cd%\grapher\grapherMain.py 
endlocal 

このスクリプトは "mygrapher"にあります。物事を実行するには、私はそれからやる、私のコマンドプロンプトになるだろう:

>cd Desktop\mygrapher (this navigates into the "mygrapher" folder) 
>rungraph.bat (this executes the batch file) 
+3

とこれは@İsmail 'cartman'Dönmezとどのように異なるのですか? –

0

は、あなたのスクリプトイスマイル@

python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()" 
関連する問題