Pythonで書かれたいくつかの小さなユーティリティスクリプトがあり、WindowsとLinuxの両方で使用できるようにしたい。明示的にPythonインタプリタ。シバン表記をWindowsとLinuxの両方の正しい場所に向ける簡単な方法はありますか?そうでない場合、WindowsとLinuxの両方でPythonインタープリターの暗黙的な呼び出しを許可する別の方法がありますオペレーティングシステム間で転送するときにスクリプトを変更する必要がありますか?
編集:WindowsでのShebangサポートはCygwinで提供されますが、CygwinではなくネイティブのWindows Pythonインタープリターを使用します。
編集#2:シェバン記法はCygwin端末のファイルの関連付けを上書きするようです。 Cygwin Pythonをアンインストールし、/ usr/bin/pythonをWindowsネイティブPythonにシンボリックリンクするだけでよいと思います。
ドキュメントの Python Launcher for Windows を読んでください。最初は PEP 397 で説明されていました。 iniでカスタムのシバン構成を定義できます(pypyを使用するなど)が、すぐに#!/usr/bin/env python3
などの仮想シバンまたは#!"C:\Python33\python.exe"
などの実際のパスを持つシバンを使用できます(引用はスペースを含むパスに必要です)。 Shebangにコマンドラインオプションを追加することもできます。たとえば、次のShebangは、スクリプトの終了後に対話モードに入るオプションを追加します:#!/usr/bin/python3 -i
。
Python 3.3は、.py(コンソール)および.pyw(GUI)スクリプトファイルタイプをそれぞれ名前付きランチャー、py.exeおよびpyw.exeに関連付けて、WindowsでのスクリプトのShebangサポートを有効にします。すべてのユーザーにインストールする場合、新しいランチャーはルートWindowsフォルダー(つまり、%SystemRoot%
)にインストールされます。それ以外の場合は、シェルでpy.exeを使用するために、PATH
にインストールディレクトリを追加する必要があります。次に、コマンドラインからpy -2
、py -3
、py -2.6
、py -3.3-32
(32ビット)などを実行できます。ランチャーは、モジュールをスクリプトとして実行するために-m
と組み合わせると便利です。 py -3 -m pip install
。
pylauncher のバージョンもあり、Python 2。
Cygwinを使用していない限り、windowsはShebangをサポートしていません。ただし、Pythonをインストールすると、.pyファイルのファイルの関連付けとして追加されます。スクリプトの名前だけをコマンドラインに入力するか、Windowsエクスプローラーでスクリプトをダブルクリックすると、Pythonを介して実行されます。
私がすることは、#!/usr/bin/env python
私のスクリプトのシバン。これにより、LinuxでのShebangサポートが可能になります。 pythonがインストールされているWindowsマシンで実行すると、ファイルの関連付けが存在するはずであり、同様に実行されます。
Pywin32をインストールします。素晴らしいことの1つは、*。pyのファイル関連付けをpythonインタープリターにセットアップすることです。
Shebangではありませんが、ファイルの関連付けを設定できる可能性があります。 this SO question を参照してください。 Windowsおよびstdin/outリダイレクトに関する既知の問題があるため、適切です...
古いトピックを開いてすみません。
1つのファイルpy.cmd
を作成し、C:\Windows\System32
フォルダーに配置します
py.bat:
@(
@set /p Shebang=
)<%1
@set Shebang=%Shebang:#! =%
@%Shebang% %1 %2 %3 %4 %5 %6 %7 %8 %9
py.bat
ファイルの説明:
*.py
ファイルから最初の行を取得します"#! "
すべてのウィンドウpythonスクリプトは、コードの最初の行としてShebang行で開始する必要があります。
#! c:\Python27\python.exe
または
#! c:\Python37\python.exe
次に、それを実行します:cmd> py SomePyFile.py param1 param1 paramX