実行したい:
python somescript.py somecommand
しかし、これを実行するとき、特定のディレクトリを含めるためにPYTHONPATH
が必要です。追加するディレクトリは実行中のプロジェクトに基づいて変更されるため、環境変数に追加することはできません。スクリプトの実行中にPYTHONPATH
を変更する方法はありますか?注:PYTHONPATH
変数すら持っていないので、このスクリプトの実行中に変数を追加したり上書きしたりすることを心配する必要はありません。
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
import sys
sys.path.append('your certain directory')
基本的にsys.pathは、pythonモジュールのすべての検索パスを含むリストです。インタプリタによって初期化されます。 PYTHONPATHのコンテンツは、そのリストの最後に自動的に追加されます。
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
この投稿は本当に古いものであり、時間の経過とともに何が変わったかわからないので、提案されていないように見えるものを追加したいと思います。
まず、python
フラグなしでスクリプトを実行可能にするには、スクリプトの先頭にShebang行を追加する必要があります。
#!/usr/bin/python
# rest of your code...
上記の簡単な行で、あなたがしていることは、使用したいpythonインタープリターのパスを指定することです。 Pythonの複数のバージョンがインストールされている場合、これは非常に便利です。
これで、スクリプトを次のように実行できます。
<~/direcotry_of_script.py>$ ./script.py [options]
./
でスクリプトを実行する場合、実行権限がないとエラーが発生する可能性があります。そのためには、Sudo chmod 744 <scriptname>
を使用して、ルート名前空間に実行権限を付与できます。
スクリプトを/usr/local/bin
ディレクトリに追加するだけです。その後、そのスクリプトはファイルシステムのどこからでも実行できます。下記参照:
$ script.py [options]
ヒント:script.pyは単に名前をscriptに変更し、次のように使用できます:
$ script [options]
これを試して、スクリプト内で関数を実行できます
python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()"