2009-07-17 10 views
6

私はPythonには新しく、私はまだ何をしているのか分かりません。最近、Python 2.6.2とwxPython 2.8を使って、非常に小さなWindowsアプリケーションを作成しました。それは素晴らしい作品です。私はそれが正常にどのくらいうまく動作しているかにとても満足しています。私はこのように、Pythonインタプリタから直接それを呼び出すときに通常によって私は意味:py2exe:コンパイルされたPython WindowsアプリケーションはDLLのために実行されません

> python myapp.py 

はしかし、私はさらに一歩進み、実際には、スタンドアロンの実行可能ファイルにこれをコンパイルしたかったです。だから、私はに続いて、wxPython wikiのpy2exeを利用しました。最初は、コマンドラインでMSVCR90.dllが見つからないというエラーが表示されました。その後、MSVCR90.dllをPython \ DLLsフォルダにコピーしました。それは最初にそれを修正したように見えました。プログラムが依存するいくつかのDLLファイルがあり、それらを配布する必要があるかもしれないし、そうでないかもしれないという速やかな警告がありました。

私はpy2exeが作成したdistフォルダに移動し、実行ファイルを実行しようとしました。

This application failed to start because MSVCR90.dll was not found. 
Re-installing the application may fix this problem. 

は、だから私は先に行って、このdistのフォルダに再びMSVCR90.dllをコピー:しかし、それを開こうとするとだけ言ったエラーダイアログをポップアップしました。しかし、それはそのトリックをしませんでした。次に、それをWINDOWS \ system32ディレクトリにコピーしました。それはどちらもしませんでした。このことを機能させるためには、私は何をする必要がありますか?

+1

これは別の質問と重複しており、より完全なディスカッションがあります。
StackOverflowは、これを重複としてフラグを設定するのに十分なほど信頼できるかもしれません。 – resplin

答えて

8

msvcr * .dllをコピーすることはできません。サイドバイサイドアセンブリのルールを使用してセットアップする必要があります。 Samが指摘しているように再配布可能パッケージをインストールするか、規則に従う限り実行可能ファイルの横に置くことができます。詳細については、How to Deploy using XCopyが、基本的に、あなたのアプリケーションは、次のようになります:

は、ここでは「プライベートアセンブリとしてのVisual C++ライブラリのDLLを展開する」を参照してください。この

c:\My App\MyApp.exe 
c:\My App\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest 
c:\My App\Microsoft.VC90.CRT\msvcr90.dll 

1つの利点は、非管理者ユーザーが使用できるということですあなたのアプリ(私はあなたが再配布可能なインストーラを介してランタイムをインストールするためには管理者でなければならないと思う)。また、インストーラーは必要ありません。ファイルをPCにコピーするだけで、すべての作業が可能です。

+0

これはVistaの機能ですか?私は同様の問題(MSVCP71.DLLがpy2exeアプリケーションを起動したときに不足していると報告しました)と同じディレクトリに置くだけでした。(少なくともXPでは) –

+1

@Luper:私は新しいルールがmsvcr80 。 – RichieHindle

関連する問題