私はシェルの使用に不慣れで、$HOME
にディレクトリを作成したいと思っていました。ここに、すべてのpythonスクリプトを配置し、そのディレクトリへのパスを設定して、移動できるようにします。私のMacの任意のフォルダに移動し、特定のファイルでこれらのスクリプトを実行します。スクリプトは、それらのスクリプトへの入力として機能するファイルと同じディレクトリ内に含まれている必要はありません。
私は読んでこれを.zshrc
ファイルに追加しました:
export PATH="$HOME/python_functions/bin:$PATH"
次に、sleep_plotter.py
というスクリプトをpython_functions/bin
に追加しました。この場所に、今後のすべてのスクリプトも配置する予定です。
ただし、そのスクリプトへの入力として使用するテキストファイルを含むフォルダーに移動し、python sleep_plotter.py 113testCtM113.txt
と入力すると、最後の引数はスクリプトへのテキストファイル入力であり、次のエラーメッセージが表示されます。
python: can't open file 'sleep_plotter.py': [Errno 2] No such file or directory
しかし、echo $PATH
を使用してパスを呼び出すと、次のようになります。
/Users/myname/python_functions/bin:
これから、pythonがPythonコマンドを実行すると、そのディレクトリを探しているので、sleep_plotter.py
を実行できるはずです。このファイルを含まない別のフォルダにいるとき。
Mac OSX 10.11.2、zsh、およびAnaconda2.3.0を使用しています。
PATH
変数は、コマンドの実行時に検索されるディレクトリを定義します。ただし、python sleep_plotter.py 113testCtM113.txt
を実行すると、sleep_plotter.py
はpython
プログラム(コマンド)の引数になります。シェルはPATH
を使用してpython
を検索しますが、引数は検索しません。
スクリプトに実行可能属性を追加できます。
$ chmod +x /Users/myname/python_functions/bin/sleep_plotter.py
Shebang シーケンスをPythonスクリプトの先頭(最初の行)に追加します。
#!/usr/bin/env python
そして、スクリプトをコマンドとして直接実行します。
$ sleep_plotter.py 113testCtM113.txt
pythonを拡張して追加のディレクトリを検索する場合は、2つのことを行う必要があります。PYTHONPATH変数を設定し、Pythonで-m
オプションを使用します。
~/.zshrc
内($PATH
がないことに注意してください):
export PYTHONPATH="$HOME/python_functions/bin"
そしてターミナルでの使用:
python -m sleep_plotter 113testCtM113.txt
pythonファイルの.py
拡張子を省略しなければならないため、以前と同じように入力します。