我正在尝试通过执行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 Redistributable Package”。我在64位Windows 8上运行32位python。我正在尝试构建一个32位二进制文件
此外没有这样的文件夹:“C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ redist \”。这就是我的电脑所包含的内容:
修改
在我的C:\驱动器上搜索msvcp90.dll
时,我发现它们安装在奇怪的路径中,如下所示:
答案 0 :(得分:12)
我建议完全忽略依赖。将MSVCP90.dll
添加到作为dll_excludes
选项的py2exe
列表中。用户必须安装Microsoft Visual C ++ 2008可再发行组件。一个例子:
setup(
options = {
"py2exe":{
...
"dll_excludes": ["MSVCP90.dll", "HID.DLL", "w9xpopen.exe"],
...
}
},
console = [{'script': 'program.py'}]
)
答案 1 :(得分:3)
(新答案,因为另一个答案描述了另一种解决方案)
您可以从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
下的文件并将它们作为数据文件复制到你的捆绑。
有关详细信息,请参阅the py2exe tutorial。
答案 2 :(得分:0)
我认为它与目录中的空格有关。您应该尝试使用.rstrip()
。例如,把这个:
directory='C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT'
directory=directory.rstrip()
然后,您可以像使用实际路径一样使用变量目录。
这应该让python能够识别以前无法解密它的目录。
答案 3 :(得分:0)
我以前在Windows上出现了很多关于复杂化的问题,比如你面临的问题以及使用pip install cython
安装像Cython这样的软件包。
经过两周的痛苦后,最适合我的解决方案是下载并运行Windows提供的非官方MinGW GCC二进制文件here。你可能想尝试一下,看看它是否有帮助。
如果您这样做,您可能想要卸载MinGW(如果已经有)。我不知道这是否是必要的,但我总是这样做以防万一。我确实将它与Cygwin并排安装,没有任何问题。