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

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

私はシェルの使用が初めてで、$HOMEすべてのPythonスクリプトを置くことができるディレクトリを作成したいと思います。 Mac上の任意のフォルダに移動して、特定のファイル、つまりスクリプトからこれらのスクリプトを実行できるように、そのディレクトリへのパスを設定したいと思います。このスクリプトへの入力として使用されるファイルと同じディレクトリに含める必要はありません。

私はこれを読み、これを私の.zshrcファイルに追加しました。

export PATH="$HOME/python_functions/bin:$PATH"

sleep_plotter.pyそれからtoというスクリプトを追加しましたが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への引数になります。pythonShellはPATHfindを使用しますpythonが、その引数は使用しません。

スクリプトに実行可能なプロパティを追加できます。

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

1つ追加シェルボーンPythonスクリプトの一番上の順序(最初の行):

#!/usr/bin/env python

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

$ sleep_plotter.py 113testCtM113.txt

答え2

Pythonを展開して別のディレクトリを検索するには、2つのことを行う必要があります。 PYTHONPATH変数を設定し、-mPythonでオプションを使用することです。

In(何も~/.zshrcありません):$PATH

export PYTHONPATH="$HOME/python_functions/bin"

端末で使用:

python -m sleep_plotter 113testCtM113.txt

.pypythonファイル拡張子を省略する必要があるため、前に入力したのと同じです。

関連情報