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 で実行するように設定することもできます。例えば (管理者権限が必要):
コマンドプロンプトを起動する。
.py
スクリプトに正しいファイルグループを関連付ける:assoc .py=Python.File
全ての Python ファイルを新しい実行ファイルにリダイレクトする:
ftype Python.File=C:\Path\to\pythonw.exe "%1" %*
3.4. 追加のモジュール¶
Python は全プラットフォーム互換を目指していますが、 Windows にしかないユニークな機能もあります。標準ライブラリと外部のライブラリの両方で、幾つかのモジュールと、そういった機能を使うためのスニペットがあります。
Windows 固有の標準モジュールは、 MS Windows 固有のサービス に書かれています。
3.4.1. PyWin32¶
The PyWin32 module by Mark Hammond is a collection of modules for advanced Windows-specific support. This includes utilities for:
- 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.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