2017-12-05 8 views
0

は私だけ含むスクリプト/tmp/printy.pyがあるとパスを使用していませんなぜbashで、明示的なインタプリタを使用すると、変数

chmod +x /tmp/printy.py 
export PATH=$PATH:/tmp/ 
python printy.py 

そして、何がそれをめざし作るために、特定のインタプリタでprinty.py実行することになっているcronジョブ、たとえば、に追加することができますありませんrk?

恐らく重複しますが、何も見つかりませんでした。間違った検索語を使用していますか?

+1

あなたはこれをシミュレートするPYTHONPATH-mの組み合わせを使用することができます。 – PesaThe

答えて

2

シェルでのパス検索は、コマンドにのみ適用され、任意のファイルではありません。最初の例では、printy.pyがコマンド名です。 2つ目は、Pythonの単なる引数であり、PythonはPATHを使用して実行するスクリプトを探しません。 printy.pyが現在の作業ディレクトリに存在することが予想されます。ただ、/ printy.py`全体のパス `のpythonに/ tmpを使用し

PYTHONPATH=$PATH python -m printy 
+0

これは理由を説明するものですが、hashbangを上書きする方法はありますか?たとえば、指定されたインタプリタ以外のディレクトリを使って、printy.pyをそのディレクトリの外から実行しますか? – jambox

+0

パスルックアップは任意のファイルに適用でき、すべてが呼び出し元のアプリケーションに依存します。起こっていることは、 'printy.py'という文字列がPythonに渡されることです。その情報で何をしたいのかを決めることができます。 – 123

+0

FWIW Perlと同様のことを試みましたが、同じことが起こります。私は、sys.pathトリッキーを使ってこれを行うためにpython *を作ることができるのを知っています。 – jambox

関連する問題