2011年7月12日火曜日

Windows 向け Python ランチャー

原文はこちら: 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.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 メーリングリストのスレッドで重要な議論が行われています。

CPython 3.2.1 リリース

原文はこちら: CPython 3.2.1 Released

python-dev チームを代表して、リリースマネージャーを務める Georg BrandlCPython 3.2.1 の最終リリースを発表しました。Windows インストーラーと tar ボールが7月10日に提供されています。ぜひ、このリリースへアップグレードを検討してください。

What's New ドキュメントに 3.2 の新機能一覧が、ソースファイルに含まれる Misc/NEWS ファイルにバグ修正の一覧があります。

このリリースに関する問題、または何か他に問題を見つけたら http://bugs.python.org/ へ報告してください。

2011年7月7日木曜日

3.2.1 RC2 リリース

原文はこちら: 3.2.1 Release Candidate 2 Released

6月リリース に続いて、3.2.1 系の2番目のリリース候補 (RC2) が 提供されています 。5月15日にリリースされた最初のリリース候補から、40以上の問題を修正しました。3.2.1 の正式リリース前にもう1度確認する意味も含めて、みなさんのプロジェクトでこの RC2 をテストするのをお奨めします。

修正箇所

I/O
#1195 は修正するのに2、3年かかりましたが、 fgets を呼び出す前に clearerr を行うシンプルな修正により、 input() 内部で CTRL-D による sys.stdin.read() の中断に関する問題を解決しました。 io システムは、 #12175 において、 read()None を返すときに、その返り値の None と共に readall メソッドでクリーンアップするようにしました。そして、ファイルが開けないときは ValueError を発生させます。

#11272 は、RC2 で行われた修正内容ではありませんが、3.2.1 の重要な修正内容で、Windows 環境での文字列の後ろに続く \r に関する input() の修正です。この問題は何度も報告され、多くの人に影響を与えていました (disutils の upload コマンドなど) 。3.2.1 がうまく解決してくれることを望みます。
Windows
3.2.0 は、Windows 向けに os.symlink という新機能を追加しました。この機能は #12084 の問題からきていて、 os.stat は、Windows のシンボリックリンクを間違って評価するので、内部の様々な stat 関数の仕組みが修正されました。

あるユーザーが os.path.isdir が遅いことに気付きました。この原因は、前述した os.stat の修正によるもので、特にシンボリックリンクを評価するときに通常ファイルより2倍遅くなっていました。 os.path.isdir は、パフォーマンスのボトルネックにはならないとはいえ、インタープリター上で何度も呼び出されます。 GetFileAttributes を使う #11583 の修正により、ほんの少しだけ高速化されます。
subprocess
誤った引数で Popen オブジェクトを作成すると AttributeError が発生していましたが、その問題は #12085 で報告され、その報告者が修正しました。3.2.0 での変更に伴い、環境変数が空のとき、特に env 引数を Popen は正しく扱っていませんでした。 #12383 でその問題が報告され、すぐに修正されました。
その他
3.2.1 RC2 の全ての変更内容を知りたい方は、 チェンジログ をチェックアウトして いますぐダウンロード してください!

いつものように、どんな問題でも http://bugs.python.org へ見つけた問題を報告してください。私たちは、みんなの協力により品質の高い Python をリリースできることに感謝しています。