2012-08-26 15 views
19

をインストールされているにもかかわらず、私はソースからパッケージをビルドしようとしているpython setup.py py2exeエラー:「MSVCP90.dll:そのようなファイルやディレクトリはありません」のMicrosoft Visual C++ 2008再頒布可能パッケージは、

これはからのコードのセクションでを実行することによって、

if sys.platform == "win32": # For py2exe. 
    import matplotlib 
    sys.path.append("C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\redist\\x86\\Microsoft.VC90.CRT") 
    base_path = "" 
    data_files = [("Microsoft.VC90.CRT", glob.glob(r"C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\*.*")), 

エラー、それは示しています:setup.py、私は、関連するだろうと仮定し

*** finding dlls needed *** 
error: MSVCP90.dll: No such file or directory 

しかし、私は、Microsoft Visual C++ 2008のRedisの」インストールしましたtributableパッケージ "。私は64ビットのWindows 8で32ビットのPythonを実行しています。私は32ビットのバイナリを構築しようとしています。

また、「C:¥Program Files¥Microsoft Visual Studio 9.0¥VC¥redist¥」のようなフォルダはありません。これは私のコンピュータに何が含まれているかである:

enter image description here

EDIT:私のCにmsvcp90.dllを探しに

:私は彼らがこのような奇妙なパスにインストールされていることが判明\ドライブ:

enter image description here

+0

これらのリンクは役立ちます:http://stackoverflow.com/questions/1158705/msvcp90-dll-not-found https://www.microsoft.com/en-us/download/details.aspx?id=29 – squiguy

+1

このコードは成功しますか? 'import ctypes; lib = ctypes.WinDLL( 'msvcp90.dll') ' –

+0

@DavidHeffernan:そうです、このコードはPythonシェル(IDLE)で成功します。コードを実行した後、 ">>> lib"と表示されます claws

答えて

12

完全に依存関係を無視することをお勧めします。 py2exeのオプションとして指定されたdll_excludesのリストにMSVCP90.dllを追加してください。ユーザーは、再配布可能なMicrosoft Visual C++ 2008をインストールする必要があります。例:

setup(
    options = { 
      "py2exe":{ 
      ... 
      "dll_excludes": ["MSVCP90.dll", "HID.DLL", "w9xpopen.exe"], 
      ... 
     } 
    }, 
    console = [{'script': 'program.py'}] 
) 
+0

VS2008は再頒布可能ですか?それは私がインストールする必要があるいくつかの新しいパッケージですか? – claws

+0

申し訳ありませんが、私はVisual C++ 2008 redistパッケージを意味しました。私は修正するために編集します。 – nneonneo

+1

これはhttp://www.microsoft.com/en-us/download/details.aspx?id=29です。それから私はそれをインストールし、それを何度も修復しました。それでも問題は残る – claws

3

(新しい答え、他の答えは代替ソリューションを説明しているため)

あなたはWinSxSディレクトリからファイルを取得して、通常のVisual Studioで作成されたC:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRTディレクトリ(、それらをコピーすることができますあなたは持っていない)。あなたは(まだ他の回答のように、msvcp90.dllを除く)セットアッププログラムを実行することができるはずです、そして、

+-Microsoft.VC90.CRT 
    | | 
    | +-Microsoft.VC90.CRT.manifest 
    | +-msvcm90.dll 
    | +-msvcp90.dll 
    | +-msvcr90.dll 

、それが成功しMicrosoft.VC90.CRT下のファイルを検索し、それらをコピーしてください:次のような構造を得るためにそれらをコピーしますバンドルにデータファイルとして保存します。

詳細については、the py2exe tutorialを参照してください。

0

私はそれがディレクトリ内のスペースと関係があると思います。 .rstrip()を試してください。たとえば、次のように入力します。

directory='C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT' 
directory=directory.rstrip() 

実際のパスと同じように、変数ディレクトリを使用できます。

これにより、以前に解読できないディレクトリをPythonが認識できるようになります。

0

私はWindows上で複雑な問題を抱えていました。あなたが直面している問題のように、pip install cythonというCythonのようなパッケージをインストールしていました。

2週間の痛みの中で私にとって一番うまくいったソリューションは、Windows用の非公式MinGW GCCバイナリをダウンロードして実行していました。hereを提供しました。そのショットを与え、それが役立つかどうかを見てみてください。

もしそうした場合、MinGWを既にお持ちの場合はアンインストールすることをお勧めします。私はそれが厳密に必要かどうかはわかりませんが、私はいつもそうしました。 Cygwinと一緒に問題なくインストールしました。

関連する問題