フルパスを記述せずにシェルからPythonスクリプトを実行するポータブルな方法はありますか?
たとえば、Linuxの場合、ホームディレクトリにいるときに
cd ~
run.pyというPythonスクリプトを実行できるようにするには、たとえば〜/ long / path / to / run.pyですが、次のように入力するだけで実行したいと思います。
python run.py
それ以外の
python ~/long/path/to/run.py
PATH変数のようにいくつかのディレクトリを含むある種の検索パスリストを期待します。これにより、python run.pyは、ディレクトリの1つで最初に検出したrun.pyを実行します。
run.pyを実行可能ファイルに変換し、そのディレクトリにシステムPATH変数を追加することを検討しましたが、Pythonスクリプトを実行可能にする移植可能な方法を見つけることができませんでした。
編集
質問してから1年後、私は少し初心者ではなくなりました。私の質問はあまり明確ではなく、あまり意味がないことがわかりました。質問に賛成した後、いくつかのことを明確にします。
1)ポータブル。
私がこれを尋ねたとき、私はポータブルと言いました。しかし、この場合、ポータブルが何を意味するのかは明確ではなく、私はそれをあまり強調しませんでした。
プラットフォーム:POSIX(Linux、MacOSなど)およびWindowsで動作する必要があります
cmd.exe
Windowsはを使用し、POSIXはを使用するため、これはまだあまり意味がありませんsh
。したがって、それぞれが異なる構文でコマンドを実行できます。sh
したがって、可能な限り最も移植性の高い方法は、両方に同じ入力をフィードしcmd.exe
、両方の場合にpythonスクリプトを実行することであるとしましょう。この場合、 POSIXとWindowssystem
で使用するANSIC関数から同じコマンドを実行できます。ANSI Cは、WindowsとPOSIXに共通する数少ないものの1つであり、その場合、質問はある程度意味があります。sh
cmd
2)実行可能
次に、フレーズturning run.py into an executable
はあまり明確ではありません。それまでに、Linuxの戦略について話していましchmod +x run.py
た。シバン#!/usr/bin/env python
を追加し、そのディレクトリを追加すると、システムはPATH環境変数を追加します。ただし、WindowsはLinuxのような実行可能ファイルのメタデータプロパティをサポートしておらず、/ usr / bin / envは必ずしもWindowsに存在するとは限らないため、これはWindowsでは機能しません。
3)拡張
最後に、私の頭の中で、実行するファイルの種類を指定しないソリューションを望んでいました。そのため、いつか、たとえばperlファイルにすることにした場合、インターフェイスは変更されません。
run.py
したがって、ファイルタイプを指定するため、書き込みは不適切になります。ただ書くことができたほうがいいでしょうrun