python setup.py py2exe
を実行してソースからパッケージをビルドしようとしています
これはsetup.pyのコードのセクションであり、関連があると思います。
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\*.*")),
それが示すエラー:
*** finding dlls needed ***
error: MSVCP90.dll: No such file or directory
ただし、「Microsoft Visual C++ 2008再頒布可能パッケージ」をインストールしました。 32ビットを実行していますpython 64ビットWindows8で実行しています。 32ビットバイナリを構築します。
また、「C:\ ProgramFiles\Microsoft Visual Studio9.0\VC\redist \」のようなフォルダはありません。これは私のコンピュータに含まれているものです:
編集:
C:\ドライブでmsvcp90.dll
を検索すると、次のような奇妙なパスにインストールされていることがわかりました。
依存関係を完全に無視することをお勧めします。 MSVCP90.dll
のオプションとして指定されたdll_excludes
のリストにpy2exe
を追加します。ユーザーは、Microsoft Visual C++ 2008再配布可能ファイルをインストールする必要があります。例:
setup(
options = {
"py2exe":{
...
"dll_excludes": ["MSVCP90.dll", "HID.DLL", "w9xpopen.exe"],
...
}
},
console = [{'script': 'program.py'}]
)
(他の回答は代替ソリューションを説明しているため、新しい回答)
WinSxSディレクトリからファイルを取得し、それらをC:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT
ディレクトリ(通常はVisual Studioによって作成されますが、お持ちではありません)にコピーできます。それらをコピーして、次の構造を取得します。
+-Microsoft.VC90.CRT
| |
| +-Microsoft.VC90.CRT.manifest
| +-msvcm90.dll
| +-msvcp90.dll
| +-msvcr90.dll
次に、セットアッププログラムを実行できるようになり(他の回答のようにmsvcp90.dll
を除く)、Microsoft.VC90.CRT
の下のファイルが正常に検出され、データファイルとしてバンドルにコピーされます。
詳細については、 py2exeチュートリアル を参照してください。
私は、あなたが直面している問題や、pip install cython
を使用したCythonのようなパッケージのインストールなど、Windowsでの複雑化に関して非常に多くの問題を抱えていました。
2週間の苦痛の後で私にとって最もうまくいった解決策は、提供されたWindows用の非公式のMinGW GCCバイナリをダウンロードして実行することでした ここ 。あなたはそのショットを与えて、それが役立つかどうか見てみたくなるかもしれません。
すでに実行している場合は、MinGWをアンインストールすることをお勧めします。それが厳密に必要かどうかはわかりませんが、念のためいつもやっています。 Cygwinと並べて問題なくインストールしました。
ディレクトリ内のスペースと関係があると思います。 .rstrip()
を使用してみてください。たとえば、次のように入力します。
directory='C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT'
directory=directory.rstrip()
その後、実際のパスを使用するのと同じように、変数ディレクトリを使用できます。
これにより、pythonは、以前は解読できなかったディレクトリを認識できるようになります。