echo $PATH は Python スクリプトへのパスを表示しますが、実行することはできません。

echo $PATH は Python スクリプトへのパスを表示しますが、実行することはできません。

私はシェルの使用に慣れていないので、$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への引数です。シェルはを検索するために使用しますが、その引数は検索しません。pythonPATHpython

スクリプトに実行可能属性を追加できます。

$ chmod +x /Users/myname/python_functions/bin/sleep_plotter.py

追加シバンPython スクリプトの先頭 (最初の行) に次のシーケンスを追加します。

#!/usr/bin/env python

スクリプトをコマンドとして直接実行します。

$ sleep_plotter.py 113testCtM113.txt

答え2

Python を拡張して追加のディレクトリを検索する場合は、PYTHONPATH 変数を設定し、-mPython でオプションを使用するという 2 つの操作を行う必要があります。

In ~/.zshrc(in がないことに注意してください$PATH):

export PYTHONPATH="$HOME/python_functions/bin"

ターミナルでは以下を使用します:

python -m sleep_plotter 113testCtM113.txt

.pyPython ファイルの拡張子を省略する必要があるため、以前と同じくらいの入力が必要になります。

関連情報