web-dev-qa-db-ja.com

シバン記法:Python WindowsとLinuxのスクリプト?

Pythonで書かれたいくつかの小さなユーティリティスクリプトがあり、WindowsとLinuxの両方で使用できるようにしたい。明示的にPythonインタプリタ。シバン表記をWindowsとLinuxの両方の正しい場所に向ける簡単な方法はありますか?そうでない場合、WindowsとLinuxの両方でPythonインタープリターの暗黙的な呼び出しを許可する別の方法がありますオペレーティングシステム間で転送するときにスクリプトを変更する必要がありますか?

編集:WindowsでのShebangサポートはCygwinで提供されますが、CygwinではなくネイティブのWindows Pythonインタープリターを使用します。

編集#2:シェバン記法はCygwin端末のファイルの関連付けを上書きするようです。 Cygwin Pythonをアンインストールし、/ usr/bin/pythonをWindowsネイティブPythonにシンボリックリンクするだけでよいと思います。

57
dsimcha

ドキュメントの 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 -2py -3py -2.6py -3.3-32(32ビット)などを実行できます。ランチャーは、モジュールをスクリプトとして実行するために-mと組み合わせると便利です。 py -3 -m pip install

pylauncher のバージョンもあり、Python 2。

33
Eryk Sun

Cygwinを使用していない限り、windowsはShebangをサポートしていません。ただし、Pythonをインストールすると、.pyファイルのファイルの関連付けとして追加されます。スクリプトの名前だけをコマンドラインに入力するか、Windowsエクスプローラーでスクリプトをダブルクリックすると、Pythonを介して実行されます。

私がすることは、#!/usr/bin/env python私のスクリプトのシバン。これにより、LinuxでのShebangサポートが可能になります。 pythonがインストールされているWindowsマシンで実行すると、ファイルの関連付けが存在するはずであり、同様に実行されます。

32
Spencer Rathbun

Pywin32をインストールします。素晴らしいことの1つは、*。pyのファイル関連付けをpythonインタープリターにセットアップすることです。

1
Wai Yip Tung

Shebangではありませんが、ファイルの関連付けを設定できる可能性があります。 this SO question を参照してください。 Windowsおよびstdin/outリダイレクトに関する既知の問題があるため、適切です...

0
Chris J

古いトピックを開いてすみません。

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ファイルの説明:

  1. *.pyファイルから最初の行を取得します
  2. シバン文字を削除する"#! "
  3. python Shebangを使用してファイルを実行python path

すべてのウィンドウpythonスクリプトは、コードの最初の行としてShebang行で開始する必要があります。

#! c:\Python27\python.exe

または

#! c:\Python37\python.exe

次に、それを実行します:cmd> py SomePyFile.py param1 param1 paramX

0
John Doe