原文はこちら: A Python Launcher For Windows
Mark Hammond (pywin32 の作者であり、長い間 Windows 環境の Python サポーター) は、 PEP 397 を提案しました。その PEP は Windows 環境の新たな Python ランチャーについて記述したものです。Vinay Sanjip (標準ライブラリ logging モジュールの作者) は、つい先日そのランチャーを実装して、いま https://bitbucket.org/vinay.sajip/pylauncher/downloads からダウンロードできます。
このランチャーは、Python 2 と 3 が同時に利用可能であり、Windows 環境の Python スクリプト (.py と .pyw ファイル) に対して、実行する Python のバージョンを指定します。
Windows ユーザーは、残っている問題を解決する Python 開発者を支援するために、このランチャーをダウンロードしてテストすることを検討してください。このランチャーは、独立したアプリケーションとしてパッケージングされていて、現在、利用できる Python のバージョンをサポートします。目的としては、ランチャーが完成したら、Python 3.3 の一部として提供する予定です。(依然として、以前のバージョンのユーザー向けに独立したアプリケーションとして利用できるようにする予定ではあります)
このランチャーは2つのバージョンが利用できます。 Program Files ディレクトリにインストールする launcher.msi と、Windows の System32 ディレクトリにインストールする launchsys.msi です (64 ビット Windows 向けの 64 ビットバージョンも用意されています) 。
ランチャーの動作についての完全な仕様は PEP 397 に記述されています。次に基本的な原則をまとめます。
ランチャーをインストールすると、 .py と .pyw スクリプトファイルが関連付けされます。他に自分で設定しない限り、スクリプトはシステム上のデフォルトの Python を使って実行されます。そのため、特に変更は見られません。もしコンソールをよく使うなら、1つだけ設定を行った方が良いかもしれません。それは PATHEXT 環境変数 に .py を追加することで、スクリプトが別のコンソールで実行されないようにします。
Python 2 を使う必要があるスクリプトを指定するには、単に次の1行を
一方、Python 3 を使う必要があるスクリプトを指定したいなら、次の1行を最初の行に追加してください。
次に紹介する python-dev メーリングリストのスレッドで重要な議論が行われています。
Mark Hammond (pywin32 の作者であり、長い間 Windows 環境の Python サポーター) は、 PEP 397 を提案しました。その PEP は Windows 環境の新たな Python ランチャーについて記述したものです。Vinay Sanjip (標準ライブラリ logging モジュールの作者) は、つい先日そのランチャーを実装して、いま https://bitbucket.org/vinay.sajip/pylauncher/downloads からダウンロードできます。
このランチャーは、Python 2 と 3 が同時に利用可能であり、Windows 環境の Python スクリプト (.py と .pyw ファイル) に対して、実行する Python のバージョンを指定します。
Windows ユーザーは、残っている問題を解決する Python 開発者を支援するために、このランチャーをダウンロードしてテストすることを検討してください。このランチャーは、独立したアプリケーションとしてパッケージングされていて、現在、利用できる Python のバージョンをサポートします。目的としては、ランチャーが完成したら、Python 3.3 の一部として提供する予定です。(依然として、以前のバージョンのユーザー向けに独立したアプリケーションとして利用できるようにする予定ではあります)
このランチャーは2つのバージョンが利用できます。 Program Files ディレクトリにインストールする launcher.msi と、Windows の System32 ディレクトリにインストールする launchsys.msi です (64 ビット Windows 向けの 64 ビットバージョンも用意されています) 。
ランチャーについての詳細
ランチャーの動作についての完全な仕様は PEP 397 に記述されています。次に基本的な原則をまとめます。
- ランチャーは、 py.exe (コンソールバージョン) と pyw.exe (GUI バージョン) の2つの実行可能ファイルを提供する。
- ランチャーは、 .py (コンソール) と .pyw (GUI) の拡張子をもつファイルのハンドラとして登録される。
- スクリプトを実行すると、ランチャーは Unix スタイルの #! (シェバング) を探す。そして python (システムデフォルトの Python)、 python2 (デフォルトの Python 2 リリース)、 python3 (デフォルトの Python 3 リリース) の実行可能ファイルを認識する。このバージョン指定の詳細レベルは、ユーザまたはマシン毎に簡単に変更できる。
- 独立して使う場合、 py.exe コマンドランチャーは Python 対話型インタープリターを起動する。次の用途にコマンドラインスイッチがサポートされる。 py -2 が Python 2 を、 py -3 が Python 3 を、 py がデフォルトバージョンを起動する。
シンプルな使い方
ランチャーをインストールすると、 .py と .pyw スクリプトファイルが関連付けされます。他に自分で設定しない限り、スクリプトはシステム上のデフォルトの Python を使って実行されます。そのため、特に変更は見られません。もしコンソールをよく使うなら、1つだけ設定を行った方が良いかもしれません。それは PATHEXT 環境変数 に .py を追加することで、スクリプトが別のコンソールで実行されないようにします。
Python 2 を使う必要があるスクリプトを指定するには、単に次の1行を
#!/usr/bin/env python2そのスクリプトの最初の行に追加してください。(これは Unix 互換な書き方ですが、Unix 互換を必要としない場合は #!python2 でも構いません) 。
一方、Python 3 を使う必要があるスクリプトを指定したいなら、次の1行を最初の行に追加してください。
#!/usr/bin/env python3また次のいずれかのコマンドを使って、Python インタープリターを起動できます。
# Python のデフォルトバージョン py # Python 2 py -2 # Python 3 py -3実行するには、 py.exe の実行可能ファイルのパスが通っている必要があります。これはインストーラーの launchsys バージョンでは自動的に追加されますが、 launcher.msi のバージョンでは PATH に対して手動でインストールディレクトリ (C:\Program Files\Python Launcher) を追加する必要があります。
参考文献
次に紹介する python-dev メーリングリストのスレッドで重要な議論が行われています。
- Mark による最初の PEP 草稿の発表: http://mail.python.org/pipermail/python-dev/2011-March/109509.html
- PEP 草稿の第2版: http://mail.python.org/pipermail/python-dev/2011-March/109786.html
- ランチャーの C 実装についての Vinay の最初の質問: http://mail.python.org/pipermail/python-dev/2011-June/112145.html
- Vinay による C 実装の発表: http://mail.python.org/pipermail/python-dev/2011-July/112184.html
- Vinay によるテストの呼びかけ: http://mail.python.org/pipermail/python-dev/2011-July/112251.html