セットアップ用のパッケージ python-X.X.X.msi を使わないで使う際の注意。結構面倒くさい。
Python 2.6
SxS の関係上、Microsoft Visual C++ 2008 Redistributable Package をインストールする必要がある。
必要なバイナリは python26.dll のみ。
sys.path
sys.path を考慮しなくてよい方法は、使用するライブラリを初期状態でも import できるように適切に配置することである。
- C:\PythonXX\Lib 以下を pythonXX.zip としてパッケージする。*.py/*.pyc/*.pyo のいずれでも良い。
- C:\PythonXX\DLLs 以下はアプリケーション *.exe のあるディレクトリにコピーする。*1
py2exe などを参考にすると良い。
そうでない場合は sys.path を設定する必要がある。sys.path の初期状態は
[ 'pythonXX.dll のあるディレクトリ\\pythonXX.zip', '.\\DLLs', '.\\lib', '.\\lib\\plat-win', '.\\lib\\lib-tk', 'アプリケーション *.exe のあるディレクトリ', ]
である。Py_Initialize() すると import site しようとするが、おそらく見つからないだろう。*2
そこで独自の site.py を作成し、sys.path に登録されているディレクトリに配置することになる。
import sys _names = sys.builtin_module_names if 'posix' in _names: pass elif 'nt' in _names: import nt as os #ここでパスを追加する #os.path は使用できない #elif 'os2' in _names: # if sys.version.find('EMX GCC') == -1: # import ntpath as path # else: # import os2emxpath as path #elif 'mac' in _names: # import macpath as path #elif 'ce' in _names: # import ntpath as path #elif 'riscos' in _names: # import riscospath as path if __name__ == 'site': sys.modules['sitecustomize'] = sys.modules['site'] del sys.modules['site'] import site for path in sys.path[:]: site.addsitedir(path)
もし python.exe も使いたいなら上のスクリプト site.py を sitecustomize.py としても配置しておくと良い。
site.py
sys.path へのパスの追加はこのスクリプトが行う。pythonXX.dll は上にある sys.path の初期状態の設定とレジストリからの参照だけを行う。
pywin32
pythoncom2X.dll と pywintypes2X.dll は %windir%\system32 にコピーするべきである。