0

py2exeを使用してexeにしようとしているwxPythonアプリケーションがありますが、問題が発生しています。MSVCP90.dllスクリプトと同じディレクトリにあり、py2exeが終了した後、exeを起動すると「MSVCR90.dllが見つからないため、プログラムを開始できません...」と表示されます。なぜそれを見つけられないのですか?

py2exeを実行している間、次の情報も取得します。

The following modules appear to be missing
['Carbon', 'Carbon.Files']
...
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.
...
  OLEAUT32.dll - C:\PATH
  USER32.dll - C:\PATH
...
  MSVCP90.dll - C:\PathToTheDllInMyScriptsFolder

ここに欠けているものはありますか?.py wxPythonアプリを取得して、それを.exe wxPythonアプリに変換するのはどれほど難しいでしょうか?

4

4 に答える 4

3

py2exeでも同様の問題が発生しました。私のプロジェクトでは、wxPythonやRequestsなどの追加のライブラリを使用しています。

これは私のために働いた:

  1. gui2exeを使用してプロジェクトを作成する

  2. ターゲットクラスやデータファイル(私の場合は画像、sqliteデータベースなど)などの非常に基本的な設定を指定し、プロジェクトをコンパイルします。

  3. ディレクトリにはdist、私たちのマシンで動作するはずのコンパイル済みプロジェクトがあります。

  4. 次のステップは、この2つのチュートリアル(py2execx_freeze)を組み合わせたものです。

  5. 作成distディレクトリ内Microsoft.VC90.CRT

  6. msvcm90.dllこのディレクトリにファイルをコピーしますmsvcp90.dllmsvcr90.dllC:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375

  7. もコピーしますC:\WINDOWS\WinSxS\Manifests\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375.manifestが、名前をに変更しますMicrosoft.VC90.CRT.manifest

    私はWinXP32ビットとPython2.7.3を使用してこれを行い、別のxpマシンとWindows7でコンパイル済みアプリケーションを正常に起動しました。

于 2012-10-28T00:29:26.980 に答える
2

pyinstallerを試してみたいと思いますか。私もwxPythonプロジェクトでpy2exeを試し、多くのあいまいなバグを受け取りました。Pyinstallerは最初の試行で明らかになり、さらに簡単だと思いました。

于 2012-10-19T06:58:38.770 に答える
2

成功せずに1つを構築しようとしたほぼ1年後。ついにそれを手に入れました。'msvcp90.dll'、'msvcr71.dll'の両方のファイルを除外する必要があります。

dll_excludes = ['libgdk-win32-2.0-0.dll'、'libgobject-2.0-0.dll'、'tcl84.dll'、'tk84.dll'、'msvcp90.dll'、'msvcr71.dll']

于 2014-10-08T17:39:35.770 に答える
1

これを処理する方法は、py2exeパッケージからMSVCP90.dllを除外することです。これを行うセットアップスクリプトの一部を次に示します。

dll_excludes = ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll',
                'tk84.dll','MSVCP90.dll']

setup(
    data_files = data_files,
    options = {"py2exe": {"compressed": 2,
                          "optimize": 2,
                          "includes": includes,
                          "excludes": excludes,
                          "packages": packages,
                          "dll_excludes": dll_excludes,
                          "bundle_files": 1,
                          "dist_dir": "dist",
                          "xref": False,
                          "skip_archive": False,
                          "ascii": False,
                          "custom_boot_script": '',
                         }
              },
    zipfile = None,
    windows = [filename]
    )

次に、MS VisualC++ランタイムがエンドユーザーのマシンにインストールされていることを確認する責任があります。あなたはここでそれを得ることができます:

http://www.microsoft.com/en-us/download/details.aspx?id=29

私の経験では、Visual CランタイムがないWindowsマシンを見つけることはめったにありませんが、万が一の場合に備えて、これを処理する準備ができている必要があります。

頑張って、マイク

于 2012-10-20T18:27:18.417 に答える