
私はシェルの使用に慣れていないので、$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:
sleep_plotter.py
このことから、Python コマンドを実行するときに Python がそのディレクトリを参照していることがわかりました。そのため、このファイルが含まれていない別のフォルダーにいる場合でも実行できるはずです。
私はMac OSX 10.11.2、zsh、Anaconda 2.3.0を使用しています。
答え1
PATH
変数は、コマンドを実行するときに検索されるディレクトリを定義します。ただし、 を実行する場合python sleep_plotter.py 113testCtM113.txt
、はプログラム (コマンド)sleep_plotter.py
への引数です。シェルはを検索するために使用しますが、その引数は検索しません。python
PATH
python
スクリプトに実行可能属性を追加できます。
$ chmod +x /Users/myname/python_functions/bin/sleep_plotter.py
追加シバンPython スクリプトの先頭 (最初の行) に次のシーケンスを追加します。
#!/usr/bin/env python
スクリプトをコマンドとして直接実行します。
$ sleep_plotter.py 113testCtM113.txt
答え2
Python を拡張して追加のディレクトリを検索する場合は、PYTHONPATH 変数を設定し、-m
Python でオプションを使用するという 2 つの操作を行う必要があります。
In ~/.zshrc
(in がないことに注意してください$PATH
):
export PYTHONPATH="$HOME/python_functions/bin"
ターミナルでは以下を使用します:
python -m sleep_plotter 113testCtM113.txt
.py
Python ファイルの拡張子を省略する必要があるため、以前と同じくらいの入力が必要になります。