3. Windows で Python を使う
***************************

このドキュメントは、 Python を Microsoft Windows で使うときに知ってお
くべき、 Windows 独特の動作についての概要を伝えることを目的としていま
す。


3.1. Python のインストール
==========================

ほとんどの Unix システムやサービスと異なり、Windows は Python に依存し
ておらず、プリインストールの Python はありません。しかし、CPython チー
ムは長年にわたり、コンパイル済みの Windows インストーラ (MSI パッケー
ジ)を リリース 毎に用意しています。

Python の継続的な開発の中で、過去にサポートされていた幾つかのプラット
フォームが (ユーザーや開発者の不足のために) サポートされなくなっていま
す。全てのサポートされないプラットフォームについての詳細は **PEP 11**
をチェックしてください。

* DOS と Windows 3.x は Python 2.0 から廃止予定になり、Python 2.1 で
  こ れらのシステム専用のコードは削除されました。

* 2.5 まで、 Python は Windows 95, 98, ME で動きました (ですが、すで
  に インストール時に廃止予定の警告を出していました)。 Python 2.6 (と
  その 後の全てのリリース) は、これらの OS のサポートが止められ、新し
  いリリ ースは Windows NT ファミリーしか考慮されていません。

* Windows CE は今でもサポートされています。

* Cygwin インストーラも Python インタープリタのインストールを提供し
  て います。(cf. Cygwin package source, Maintainer releases)

コンパイル済みインストーラが提供されているプラットフォームについての詳
細な情報は Python for Windows (and DOS) を参照してください。

参考:

  Python on XP
     "7 Minutes to "Hello World!"" by Richard Dooling, 2006

  Installing on Windows
     in "Dive into Python: Python from novice to pro" by Mark Pilgrim,
     2004, ISBN 1-59059-356-1

  For Windows users
     in "Installing Python" in "A Byte of Python" by Swaroop C H, 2003


3.2. 別のバンドル
=================

標準の CPython の配布物の他に、追加の機能を持っている修正されたパッケ
ージがあります。以下は人気のあるバージョンとそのキーとなる機能です:

ActivePython
   マルチプラットフォーム互換のインストーラー、ドキュメント、 PyWin32

Enthought Python Distribution
   (PyWin32 などの) 人気のあるモジュールとそのドキュメント、 Python の
   拡張をビルドするためのツールスイート

これらのパッケージは *古い* バージョンの Python をインストールするかも
しれないことに気をつけてください。


3.3. Python を構成する
======================

Python を完全に動かすために、幾つかの環境設定を変更しなければならない
かもしれません。


3.3.1. 補足: 環境変数の設定
---------------------------

Windows は環境変数を変更するためのビルトインのダイアログを持っています
。 (以降のガイドは XP のクラシカルビューに適用されます。) マシンのアイ
コン(たいていデスクトップにあって "マイコンピュータ" と呼ばれます) を
右クリックして、そこにある プロパティ を選択します。 詳細設定 タブを開
いて、 環境変数 ボタンをクリックします。

ここまでのパスをまとめると:

   マイコンピュータ ‣ プロパティ ‣ 詳細設定 ‣ 環境変数

このダイアログで、ユーザーとシステムの環境変数を追加したり修正できます
。システム変数を変更するには、マシンへの無制限アクセス(管理者権限)が必
要です。

環境に変数を追加するもう一つの方法は、 **set** コマンドを使うことです:

   set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

この設定を永続化するために、このコマンドラインを "autoexec.bat" に追加
することができます。 **msconfig** はこのファイルを編集するGUIです。

もっと直接的な方法で環境変数を見ることができます。コマンドプロンプトは
パーセント記号で囲まれた文字列を自動的に展開します:

   echo %PATH%

この動作についての詳細は **set /?** を見てください。

参考:

  https://support.microsoft.com/kb/100843
     Windows NT の環境変数

  https://support.microsoft.com/kb/310519
     Windows XP での環境変数の管理方法

  https://www.chem.gla.ac.uk/~louis/software/faq/q1.html
     Setting Environment variables, Louis J. Farrugia


3.3.2. Python 実行ファイルを見つける
------------------------------------

スタートメニューに自動的に作られた Python interpreter のメニューエント
リを使うのと別に、DOSプロンプトから Python を実行したいかもしれません
。そのためには、 "%PATH%" 環境変数に Python ディストリビューションのデ
ィレクトリを、セミコロンで他のエントリと区切って含めるように設定する必
要があります。変数の設定例は次のようになります (最初の2つのエントリが
Windows のデフォルトだと仮定します):

   C:\WINDOWS\system32;C:\WINDOWS;C:\Python25

コマンドプロンプトから **python** をタイプすると、 Python インタプリタ
を起動します。これで、スクリプトをコマンドラインオプション付きで実行す
ることも可能です。 コマンドライン ドキュメントを参照してください。


3.3.3. モジュールの検索
-----------------------

Python は通常そのライブラリ (と site-packages フォルダ) をインストール
したディレクトリに格納します。そのため、 Python を "C:\Python\" ディレ
クトリにインストールしたとすると、デフォルトのライブラリは
"C:\Python\Lib\" に存在し、サードパーティーのモジュールは
"C:\Python\Lib\site-packages\" に格納することになります。

以下は、 Windows で "sys.path" が構築される方法です:

* 最初に空のエントリが追加されます。これはカレントディレクトリを指し
  て います。

* その次に、 "PYTHONPATH" 環境変数が存在するとき、 環境変数 で解説さ
  れ ているように追加されます。 Windows ではドライブ識別子 ("C:\" など
  )と 区別するために、この環境変数に含まれるパスの区切り文字はセミコロ
  ンで なければならない事に注意してください。

* 追加で "アプリケーションのパス" を "HKEY_CURRENT_USER" か
  "HKEY_LOCAL_MACHINE" の中の
  "\SOFTWARE\Python\PythonCore{version}\PythonPath" のサブキーとして登
  録することができます。サブキーはデフォルト値としてセミコロンで区切ら
  れたパス文字列を持つことができ、書くパスが "sys.path" に追加されます
  。 (既存のインストーラーは全て HKLM しか利用しないので、 HKCU は通常
  空です)

* "PYTHONHOME" が設定されている場合、それは "Python Home" として扱わ
  れ ます。それ以外の場合、 "Python Home" を推定するために Python の実
  行 ファイルのパスから "目標ファイル" ("Lib\os.py") が探されます。
  Python home が見つかった場合、そこからいくつかのサブディレクトリ
  ("Lib", "plat-win", など) が "sys.path" に追加されます。見つからなか
  った場合、 core Python path はレジストリに登録された PythonPath から
  構築されます。

* Python Home が見つからず、環境変数 "PYTHONPATH" が指定されず、レジ
  ス トリエントリが見つからなかった場合、関連するデフォルトのパスが利
  用さ れます (例: ".\Lib;.\plat-win" など)。

結果としてこうなります:

* "python.exe" かそれ以外の Python ディレクトリにある .exe ファイル
  を 実行したとき (インストールされている場合でも PCbuild から直接実行
  さ れている場合でも) core path が利用され、レジストリ内の core path
  は 無視されます。それ以外のレジストリの "application paths" は常に読
  み 込まれます。

* Python が他の .exe ファイル (他のディレクトリに存在する場合や、COM
  経 由で組み込まれる場合など) にホストされている場合は、 "Python
  Home" は推定されず、レジストリにある core path が利用されます。それ
  以外の レジストリの "application paths" は常に読み込まれます。

* Python が Python home ディレクトリを見つけられずレジストリも存在し
  な い場合 (例: freeze された .exe, いくつかのとても奇妙なインストー
  ル構 成)、デフォルトの、ただし相対パスが利用されます。


3.3.4. スクリプトを実行する
---------------------------

Python スクリプト (".py" 拡張子を持ったファイル) はデフォルトで
**python.exe** に起動されます。この実行ファイルは、プログラムがGUIを使
う場合でもターミナルを開きます。ターミナル無しでスクリプトを実行したい
場合は、拡張子 ".pyw" を使うとそのスクリプトがデフォルトでは
**pythonw.exe** で実行されるようになります。 (2つの実行ファイルは両方
とも Python をインストールしたディレクトリの直下にあります。)
**pythonw.exe** は起動時にターミナルを開きません。

全ての ".py" スクリプトを **pythonw.exe** で実行するように設定すること
もできます。例えば (管理者権限が必要):

1. コマンドプロンプトを起動する。

2. ".py" スクリプトに正しいファイルグループを関連付ける:

      assoc .py=Python.File

3. 全ての Python ファイルを新しい実行ファイルにリダイレクトする:

      ftype Python.File=C:\Path\to\pythonw.exe "%1" %*


3.4. 追加のモジュール
=====================

Python は全プラットフォーム互換を目指していますが、 Windows にしかない
ユニークな機能もあります。標準ライブラリと外部のライブラリの両方で、幾
つかのモジュールと、そういった機能を使うためのスニペットがあります。

Windows 固有の標準モジュールは、 MS Windows 固有のサービス に書かれて
います。


3.4.1. PyWin32
--------------

Mark Hammond によって開発された PyWin32 モジュールは、進んだ Windows
専用のサポートをするモジュール群です。このモジュールは以下のユーティリ
ティを含んでいます:

* Component Object Model (COM)

* Win32 API 呼び出し

* レジストリ

* イベントログ

* Microsoft Foundation Classes (MFC) ユーザーインターフェイス

PythonWin は PyWin32 に付属している、サンプルのMFCアプリケーションです
。これはビルトインのデバッガを含む、組み込み可能なIDEです。

参考:

  Win32 How Do I...?
     by Tim Golden

  Python and COM
     by David and Paul Boddie


3.4.2. Py2exe
-------------

Py2exe は "distutils" 拡張 (Distutilsの拡張 を参照) で、 Python スクリ
プトを Windows 実行可能プログラム ("***.exe" ファイル) にラップします
。これを使えば、ユーザーに Python のインストールをさせなくても、アプリ
ケーションを配布することができます。


3.4.3. WConio
-------------

Python の進んだターミナル制御レイヤである "curses" は、 Unix ライクシ
ステムでしか使うことができません。逆に Windows 専用のライブラリ、
Windows Console I/O for Python があります。

WConio は Turbo-C の "CONIO.H" のラッパーで、テキストユーザーインタフ
ェースを作成するために利用することができます。


3.5. Windows 上で Python をコンパイルする
=========================================

CPython を自分でコンパイルしたい場合、最初にするべきことは ソース を取
得することです。最新リリース版のソースか、新しい チェックアウト をダウ
ンロードすることができます。

公式の Python リリースをビルドするのに使われている Microsoft Visual
C++ コンパイラのために、ソースツリーはソリューション・プロジェクトファ
イルを含んでいます。適切なディレクトリにある "readme.txt" を参照してく
ださい。

+----------------------+----------------+-------------------------+
| ディレクトリ         | MSVC バージョ  | Visual Studio バージョ  |
|                      | ン             | ン                      |
+======================+================+=========================+
| "PC/VC6/"            | 6.0            | 97                      |
+----------------------+----------------+-------------------------+
| "PC/VS7.1/"          | 7.1            | 2003                    |
+----------------------+----------------+-------------------------+
| "PC/VS8.0/"          | 8.0            | 2005                    |
+----------------------+----------------+-------------------------+
| "PCbuild/"           | 9.0            | 2008                    |
+----------------------+----------------+-------------------------+

これらのビルドディレクトリの全てが完全にサポートされているわけではあり
ません。使用しているバージョンの公式リリースが利用しているコンパイラの
バージョンについては、リリースノートを参照してください。

ビルドプロセスに関する一般的な情報は "PC/readme.txt" をチェックしてく
ださい。

拡張モジュールについては、 Windows 上での C および C++ 拡張モジュール
のビルド を参照してください。

参考:

  Python + Windows + distutils + SWIG + gcc MinGW
     or "Creating Python extensions in C/C++ with SWIG and compiling
     them with MinGW gcc under Windows" or "Installing Python
     extension with distutils and without Microsoft Visual C++" by
     Sébastien Sauvage, 2003

  MingW -- Python extensions
     by Trent Apted et al, 2007


3.6. その他のリソース
=====================

参考:

  Python Programming On Win32
     "Help for Windows Programmers" by Mark Hammond and Andy Robinson,
     O'Reilly Media, 2000, ISBN 1-56592-621-8

  A Python for Windows Tutorial
     by Amanda Birmingham, 2004
