【问题标题】:wxPython MSVCP90.dll errorwxPython MSVCP90.dll 错误
【发布时间】:2014-09-12 03:45:37
【问题描述】:

我筋疲力尽...我正在运行 python 2.7 并使用 wxPython 创建了一个应用程序。尝试使用 py2app 创建和 .exe 时,出现以下错误:

error: [Errno 2] No such file or directory: 'MSVCP90.dll'

我已经阅读了大量的帖子,说将这个文件添加到我的 c:\python27\DLLs 目录中就可以了。不幸的是,我已经这样做了,错误仍然存​​在。任何帮助将不胜感激。

【问题讨论】:

    标签: python wxpython py2exe


    【解决方案1】:

    我的几分钱:

    • 使用PyInstaller。优点:对于 wxPython,无需多言。积极开发,几乎每个库都有食谱 AKA 挂钩文件,即使是硬库也是如此。缺点:不依赖distutils/setuptools,所以如果你的(非纯python)库没有recipe,你必须自己处理非python依赖(distutils/setuptools recipe不起作用)。
    • 对于 py2exe(我想这就是您所说的):您不能简单地复制 DLL,您必须使用清单文件。检查this wxPython-wiki entry 看看这一切是关于什么的。此外,您必须自己处理 DLL 的分发(通过在目标机器上安装 Python 2.7,在目标机器上安装可从 Microsoft 自己分发的运行时,或者使用像 Esky 这样的帮助库,可以将其配置为包括清单和关心 DLL 本身的复制)。

    【讨论】:

    • 感谢您的信息。我会试试 pyInstaller。 “非纯 python”库是什么意思?你能举个例子吗?
    • 例如 wxPython 是一个非纯 python 库(由 *.py 文件组成并具有二进制依赖项,即 wxwidgets)。不过,PyInstaller 中有wxPython 的钩子文件,所以你不必担心这些。
    • 我认为清单文件不再是问题。由于使用了 Visual Studio 的版本,Python 2.6 发生了这种情况。据我了解,这个问题在 2.7 中消失了。
    • 参见 e。 G。 cx_Freeze docs。我不是这方面的专家,但是根据 Microsoft 通常需要清单,以允许并行安装具有相同名称但内部版本不同的 DLL(管理 DLL 地狱)。这种机制称为 WinSxS,不同的 DLL 版本最终存在于其中。 '这对于从 2.6 到 3.2(基于 VS 2008)的所有 Python 来说都是必需的。
    • 我试过 pyinstaller。这很容易。我要放弃py2exe了。
    【解决方案2】:

    分发 MSVCP90.DLL 文件是一个不同的问题。 OP面临的是py2exe在构建exe时找不到MSVCP90.DLL文件。

    解决方案是将 MSVCR90.DLL 放在 dll_excludes 列表中,或者通过更改 setup.py 文件,或者通过像这样在命令行中传递它:

    python setup.py py2exe --dll-excludes=MSVCP90.DLL

    【讨论】:

    • 这当然是正确的。但这只是解决方案的第一步。虽然 py2exe 创建的 EXE 可以在开发者机器上愉快地运行(因为至少 Python 2.7 已经处理了 DLL),但目标机器(没有 Python 2.7 或 VS2008)通常不会有 DLL。
    • >> I got a --dll_excludes not recongnized error 抱歉打错了:--dll-excludes 而不是--dll_excludes
    猜你喜欢
    • 2013-01-26
    • 2010-11-12
    • 2011-05-11
    • 2012-04-21
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    相关资源
    最近更新 更多