カテゴリー
Uncategorized

組み込み版 Python 2.6.* を Portable 化する

結論

できる。でもややこしくなるだけなので、素直に msvcrt9 をインストールした方がいい。

ああめんどくさい。

条件

  1. Windows XP
  2. Python 2.6.2

やり方

Python26.dll にリンクした実行ファイルの .manifest を書く

hoge.exe.manifest として hoge.exe と同じディレクトリに保存

version が違うと動かないので注意。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
        name="*.*.*"
        version="1.0.0.0"
        type="win32"
        processorArchitecture="x86"
        />
<dependency>
<dependentAssembly>
<assemblyIdentity
                name="Microsoft.VC90.CRT"
                version="9.0.21022.8"
                type="win32"
                processorArchitecture="x86"
                publicKeyToken="1fc8b3b9a1e18e3b"
                />
</dependentAssembly>
</dependency>
</assembly>
Microsoft.VC90.CRT を持ってくる

SP1 ではない*1

hoge.exe
Microsoft.VC90.CRT.manifest
msvcr90.dll
msvcp90.dll
msvcm90.dll

または

hoge.exe
Microsoft.VC90.CRT/
Microsoft.VC90.CRT.manifest
msvcr90.dll
msvcp90.dll
msvcm90.dll

msvcp90.dll と msvcm90.dll は多分いらない。

*.pyd を hoge.exe と同じディレクトリに移動する

要するに実行可能バイナリと同じディレクトリに置いとかないとロードしない。

パスが変わるので当然上手く動かないモジュールも出てくるはず。

実行する

参考

Manifest Files Reference (Windows)

Assembly Searching Sequence (Windows)

*1:ランタイムをきちんとインストールする限りでは SP1 でも動く

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です