13

フルパスを記述せずにシェルから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.exeWindowsはを使用し、POSIXはを使用するため、これはまだあまり意味がありませんsh。したがって、それぞれが異なる構文でコマンドを実行できます。shしたがって、可能な限り最も移植性の高い方法は、両方に同じ入力をフィードしcmd.exe、両方の場合にpythonスクリプトを実行することであるとしましょう。この場合、 POSIXとWindowssystemで使用するANSIC関数から同じコマンドを実行できます。ANSI Cは、WindowsとPOSIXに共通する数少ないものの1つであり、その場合、質問はある程度意味があります。shcmd

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

4

4 に答える 4

19

を含むディレクトリがrun.pyモジュール検索パス(PYTHONPATH環境変数など)にある場合は、次のように実行できます。

python -m run

-mコマンドラインオプションに関するドキュメントは次のとおりです。

-m 指定されたモジュールをmodule-name
検索し、対応するファイルをスクリプトとして実行します。sys.path.py

于 2012-04-03T22:28:56.950 に答える
6

追加することでPythonスクリプトを実行可能にすることができます

#!/usr/bin/env python

ファイルの先頭に移動し、を使用して実行可能にしchmod +xます。

于 2012-04-03T22:25:58.660 に答える
4

明確化編集後の回答

ユーザーがファイルタイプを指定する必要がないため、@FJによって提案されたアプローチよりも次のアプローチを好みます。これは元の質問で指定されていなかったため、元の質問に対する彼の回答は正しかったことに注意してください。

可能性のある既存のプログラムpytest.pyとの競合を回避するためにファイルを呼び出しましょう。run

POSIX(MacOs、linux)で、@ Petrが言ったことを実行します。これは、@albergeが言ったことに基づいています。

  • chmod +x
  • シバンを追加#!/usr/bin/env python
  • ディレクトリを作成し、パスに追加します。Linuxでの通常の場所は、次のとおりです。単一ユーザーの場合は〜/ bin /、/usr/local/bin/すべてのユーザーの場合
  • symlink(cp -s)PATHの下にあるファイルのpytest代わりにbasenameを使用pytest.py

Windowsの場合:

  • dirを作成し、PATHに追加します。AFAIK、そのための従来の場所はありませC:\bin\~\bin\
  • 環境変数に追加.PYして、PATHEXTWindowsがPython拡張子のファイルを実行可能なファイルとして認識し、拡張子を入力しなくても済むようにします。
  • Pythonファイルをpython.exeインタプリタに関連付けます(Windowsエクスプローラ>右クリック> [常に選択したプログラムを使用する]をオンにします)。これを行うPythonインストーラーのオプションがあります。
  • (WindowsエクスプローラまたはcmdからのLink Shell Extensionを使用して)下のディレクトリへの拡張子をpytest 持つシンボリックリンクPATHmklink name dest

これsystem( "pytest" );で、両方のシステムで動作するはずです(shLinuxの場合cmd、Windowsの場合) 。

于 2013-07-06T08:32:53.270 に答える
0
  1. Pythonファイルを実行可能にします(上記の「alberge」のように)
  2. いくつかのディレクトリを作成し、このディレクトリをPATH変数に配置します
  3. このディレクトリに、Pythonスクリプトへのリンクを作成します
于 2012-04-03T22:34:47.120 に答える