2011-09-27 18 views
42

私はPythonで書かれた小さなユーティリティスクリプトをWindowsとLinuxの両方で使えるようにしたいと思っています。私は明示的にPythonインタプリタを呼び出さなくてもいいです。シバン記法をWindowsとLinuxの両方の正しい場所に向ける簡単な方法はありますか?そうでない場合、オペレーティングシステム間で転送する際にスクリプトを変更することなく、WindowsとLinuxの両方でPythonインタプリタを暗黙的に呼び出す方法がありますか?Shebang表記:WindowsおよびLinux上のPythonスクリプト?

編集:WindowsでのシバンのサポートはCygwinで提供されていますが、私はCygwinのものではなくWindows上でネイティブのWindows Pythonインタプリタを使いたいと思います。

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

+6

を使用する場合は、個別にインストールすることができますpylauncherのバージョンもあります。 .pyファイル用のPythonインタプリタとのファイル関連付けを作成してみることもできます。 –

+0

Nic ODellのコメントをフォロー:WindowsのボックスにPythonをインストールしたときはいつも、インストールプロセスが.pyファイルのファイル関連付けを作成するのを担当しました。これは、python.orgサイトのWindows用のPythonインストーラを常に使用してきました。 – GreenMatt

+0

@eryksunありがとうございます。 –

答えて

0

シバンではありませんが、ファイルアソシエーションを設定することができます。this SO questionを参照してください。Perlとそれに関連する解答もあります。これは、Windowsとstdin/outリダイレクトに関する既知の問題があるためです。

31

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

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

+4

Pythonのバージョン番号を含めるとよいです。 "python"はすべてのディストリビューションで "python2.7"にリンクしていません。 –

+0

@mid_kidだから私はenvを使って、ユーザーがデフォルトとして指定したPythonのバージョンを取得しています。 –

+1

私の主張は、常に正しいとは限りませんということです。特にあなたのスクリプトを配布するとき。 –

2

pywin32をインストールします。いいところの一つは* .pyとpythonインタプリタのファイルアソシエーションを設定することです。

23

PEP 397に最初に記載されたドキュメントのPython Launcher for Windowsについては、こちらをご覧ください。 のini(たとえばpypyを使用する)でカスタムシバン設定を定義できますが、#!/usr/bin/env python3などのバーチャルシバンまたは#!C:\Python33\python.exeなどの実際のパスを持つシバンを使用することができます。シバンにコマンドラインオプションを追加することもできます。たとえば、次のシバンは、スクリプト終了後に対話モードに入るオプションを追加します:#!/usr/bin/python3 -i

Python 3.3では、それぞれの名前付きランチャーpy.exeとpyw.exeを持つ.py(コンソール)と.pyw(GUI)スクリプトファイルの種類を関連付けて、Windows上のスクリプトに対するshebangのサポートを有効にします。新しいランチャーは、すべてのユーザー用にインストールする場合はルートWindowsフォルダ(%SystemRoot%)にインストールされます。それ以外の場合は、cmdシェルでpy.exeを使用するために、インストールディレクトリをPATHに追加することをお勧めします。コマンドラインからpy -2,py -3py -2.6py -3.3-32(32ビット)などを実行できます。ランチャーは、-mと組み合わせてモジュールをスクリプトとして実行すると便利です。 py -3 -m pip install

あなたが唯一の私は窓がシェバングサポートの任意の並べ替えを持っているとは思わないのPython 2

関連する問題