【问题标题】:lxml: DLL load failed: The specified module could not be foundlxml:DLL加载失败:找不到指定的模块
【发布时间】:2011-08-29 09:14:43
【问题描述】:

我有 Windows Server 2008 R2 x64。 它运行Python27 x86 + Django 1.3 + apache 2.2 x86 under wsgi。没有 lxml 也能正常运行。

我们使用的是soaplib,它需要lxml。我尝试通过几种方式安装 lxml:

  1. 使用easy_install
  2. 正在下载 win32 安装二进制文件。

问题是在apache下的站点下运行会引发以下错误:

ImportError at /
DLL load failed: The specified module could not be found.

它在from lxml import etree 上引发此错误

我搜索了解决方案,但没有发现任何有用的信息。我找到的一些信息:

  1. python26->python27 发生了一些变化,改变了包含的 dll
  2. 我使用依赖walker 来查找缺少哪些dll。我发现缺少的是:gpsvc.dll、IEShims.dll、msvcr90.dll。当我尝试安装 x86 可再发行包时,它并没有改变任何东西。我尝试将 msvcr90.dll 复制到 lxml 的 egg 目录,它创建了另一个错误,说它无法加载 dll(我不记得确切的异常,但如果需要我可以生成它)

通过运行manage.py runserver从django内部服务器运行时可以工作

我该如何解决这个问题?谢谢。

【问题讨论】:

    标签: python windows django lxml


    【解决方案1】:

    我从http://www.lfd.uci.edu/~gohlke/pythonlibs/安装了非官方版本

    它解决了我的问题。

    【讨论】:

    • 对于 Windows:我访问了 lfd.uci.edu/~gohlke/pythonlibs/#lxml 站点(该人应该获得奖章!)并且有许多可能的 lxml 下载。我有 32 位 Python 3.6。我看到有一个4.0版本的lxml,lxml‑4.0.0‑cp36‑cp36m‑win32.whl。所以,我想“新版本,我有那个”,安装了它,但仍然出现错误。然后我安装了 3.8 版本,lxml-3.8.0-cp36-cp36m-win32.whl,它就像一个魅力。我不知道 64 位 Python 的情况如何,您的里程可能会有所不同。
    • 为我工作 (win10 x64, python 3.6): 1: pip uninstall lxml 2: dwnd 这个 lxml-3.8.0-cp36-cp36m-win_amd64 3: pip install "C:\Users\Me \桌面\lxml-3.8.0-cp36-cp36m-win_amd64.whl"
    • 对于 Windows,您需要 Visual Studio 2015。但如果您按照以下步骤操作,它可以与 Visual Studio 2017 一起使用:dimitri.janczak.net/2017/05/20/python-3-6-visual-studio-2017
    【解决方案2】:

    我在尝试通过 Windows 脚本主机加载 etree 时也遇到了这个问题。在尝试了不同的方法之后,我发现了 Python 3.1 的这个变化,它建议新的 Python 模块不应再嵌入清单,因为它会导致没有安装 MSVC++ 运行时的分发问题:

    所以我只是在 Resource Hacker (http://www.angusj.com/resourcehacker/) 中加载了 %PythonPath%\Lib\site-packages\lxml\etree.pyd 并删除了其中嵌入的清单资源。

    【讨论】:

    • 通过“Resource Hacker”删除嵌入的清单对我有用。我使用 activestate python 2.7.2,运行 python.exe script.py 运行良好,无需对 lxml 包进行任何修改,而当我尝试在 vim 脚本中加载 python 脚本时,我得到了同样的错误。删除清单后,它运行良好。
    • 根据您的描述,我不确定在 Resource Hacker 中为该文件显示的 XML 的哪一部分是“清单资源”。那是属性“manifestVersion”吗?
    【解决方案3】:

    仅安装 DLL 是不够的,您需要使用 Apache 才能使用它们。见:

    http://groups.google.com/group/modwsgi/msg/afb025dc949c7051

    【讨论】:

      【解决方案4】:

      最简单的解决方案是: 第一步:pip卸载lxml步骤 2:点安装lxml

      但是,在通过 lxml-4.6.3.tar.gz 重新安装 lxml 时,我遇到了问题。 于是,我尝试通过对应的.whl文件重新安装,成功了!

      【讨论】:

        猜你喜欢
        • 2019-03-07
        • 2013-12-10
        • 2018-08-13
        • 2020-02-15
        • 1970-01-01
        • 2016-08-08
        • 2016-08-19
        • 2016-08-22
        相关资源
        最近更新 更多