2011-01-08 12 views
8

Windows Vistaでpythonを使用していくつかのプログラムを作成しました。しかし、私はWindows XPにそれを展開したい。 Windows XPで新しいビルドを作る必要がありますか?あるいは、これらのシステムの両方で動作するビルドを作る可能性はありますか?Vistaでexeをビルドし、py2exeを使用してXPにデプロイすることは可能ですか?

EDIT(EDIT 2 - 非常に簡単なプログラムも動作しません): 私のセットアップ:ほぼ解決

msvcr90.dll 
kernel32.dll 
    +ntdll.dll 

依存エクスプローラを使用して
from distutils.core import setup 
import py2exe 

setup(console=['orderer.py']) 

私は依存関係があることを確認:

私はinstalli ng:http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=enものをします。しかし、私は以前に手動でmsvrc90.dllを提供しようとしましたが、うまくいきませんでした。自動的に再配布する方法はありますか?または、私はこのインストールファイルを彼に提供する必要があります。

最終と主な問題

は、今私はMSVCRT.DLLに問題があります。

がダイナミック リンクライブラリMSVCRT.DLLに配置することができませんでしたwcsscpy_sプロシージャエントリポイントは、Vista上で

は私が持っているバージョン7.0.6001.18000

:Windows XPの上で発生したメッセージしかし、XP上で7.0.2600.5512

これを修正する方法はありますか?

私はいくつかのdllの...愚かなミスを排除していなかったようだ:

$ grep -lir msvcrt.dll . 
./buildout 
./buildtest.py 
./dist/ACTIVEDS.dll 
./dist/adsldpc.dll 
./dist/ATL.DLL 
./dist/credui.dll 
./dist/DSOUND.dll 
./dist/MAPI32.dll 
./dist/PROPSYS.dll 
./dist/WLDAP32.dll 

今それは働きます!

答えて

3

py2exeとmsvcr90.dll、msvcp90.dll、およびmsvcm90.dllファイルで作成された実行ファイルの隣に次の内容の「Microsoft.VC90.CRT.manifest」という名前のファイルを作成します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <noInheritable/> 
    <assemblyIdentity 
     type="win32" 
     name="Microsoft.VC90.CRT" 
     version="9.0.21022.8" 
     processorArchitecture="x86" 
     publicKeyToken="1fc8b3b9a1e18e3b" 
    /> 
    <file name="msvcr90.dll" /> 
    <file name="msvcp90.dll" /> 
    <file name="msvcm90.dll" /> 
</assembly> 
+0

このファイルを作成してこれらのdllを追加した後も、「プロシージャのエントリポイントwcsscpy_sがダイナミックリンクライブラリmsvcrt.dllに見つかりませんでした」 – dfens

+0

プログラムは2つのCランタイムライブラリに依存するべきではありません。 msvcrt.dllの依存関係がどこから来たのか調べてみてください。 * .pydファイルと* .dllファイルにDependencyWalker(http://www.dependencywalker.com/)を使用します。 – cgohlke

+0

私はそれを参照してください_ctypes.pyd – dfens

2

Vistaシステムに32ビットのPythonがあり、py2exeを使用してexeファイルを作成している場合、XPでも実行する必要があります。

問題が発生しましたか?もしそうなら、彼らは何ですか?

+0

をシステムに指定されたプログラムを実行できません。 – dfens

+0

あなたの質問をより多くの情報で更新できますか?あなたがexeをコンパイルするのに使っているdisutilsスクリプトのように。ほとんどの場合、ターゲットXPシステムにいくつかのdllファイルが含まれていなければなりません。 –

関連する問題