在Windows x86(32位)上使用Visual Studio C++ 2010 Express为Python 3.4安装lxml

11 投票
3 回答
24654 浏览
提问于 2025-04-18 08:00

相关内容

相关问题:

相关答案:

相关评论:

  • 在 Windows 上为 Python 2.7 构建 lxml
  • "@ziyuang 这意味着你使用的是 Python 3.3,它需要 Microsoft Visual Studio 2010。如果是这样,那么答案是肯定的,你应该安装这个版本。"

事实

  • Windows x86(32 位)
  • 安装了 Visual Studio C++ 2008 (从这里下载) Express 和 Visual Studio C++ 2010 (从这里下载)
  • Python 3.4.1(显然是用比 Visual Studio 2008 更新的版本编译的)
  • 我使用 pip(或 pip3.4.exe;内置于 Python 3.4)来 pip install lxml
  • distutils 使用 Visual Studio C++ 2010 Express 进行编译

我错误信息的最后几行,由 pip 记录:

cl : 命令行警告 D9025 : 用 '/w' 覆盖 '/W3'

lxml.etree.c

C:\Users\NATHAN~1\AppData\Local\Temp\pip_build_nathanielanderson\lxml\src\lxml\includes\etree_defs.h(9) : 致命错误 C1083: 无法打开包含文件:'libxml/xmlversion.h': 没有这样的文件或目录

C:\Python34\lib\distutils\dist.py:260: 用户警告:未知 发行选项:'bugtrack_url'

warnings.warn(msg)

错误:命令 'C:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\cl.exe' 失败,退出状态为 2

所以我无法通过 .egg 文件或编译来安装...

其他选项

我也找不到这个版本 Python 的 Windows 安装程序(exe 或 msi 或其他)

更新 2019年10月16日

正如评论者所说,执行文件的链接不再可用

看起来 Chris 确实 在这里提供了一个直接的 exe:

http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

谢谢你,Chris!你知道我为什么无法通过 pip 编译吗?

3 个回答

3

简单来说,你需要先安装 C 库 libxml2(还有 libxslt2),才能构建 lxml


根据 lxml 的安装文档,说得很清楚:

除非你使用的是静态的二进制版本(比如从 Windows 的安装程序获取),否则你需要安装 libxml2libxslt,具体来说:

  • libxml2 版本要在 2.6.21 或更高。可以在这里找到: http://xmlsoft.org/downloads.html

    • 我们推荐使用 `libxml2 2.7.8` 或更高版本。
    • 如果你想使用 XPath,最好不要使用 libxml2 2.6.27。
    • 如果你想使用 feed 解析器接口,特别是解析 Unicode 字符串时,最好不要使用 libxml2 2.7.4 到 2.7.6 之间的版本。
  • libxslt 版本要在 1.1.15 或更高。可以在这里找到: http://xmlsoft.org/XSLT/downloads.html

    • 我们推荐使用 libxslt 1.1.26 或更高版本。

从源代码构建的文档同样开头就提到:

要从源代码构建 lxml,你需要正确安装 libxml2 和 libxslt,包括头文件。


Windows(和其他大多数平台不同)并没有自带这些库。你在你的“事实”中没有提到你是否安装了它们。


你显示的错误信息是:

C:\Users\NATHAN~1\AppData\Local\Temp\pip_build_nathanielanderson\lxml\src\lxml\includes\etree_defs.h(9) : 
fatal error C1083: Cannot open include file: 'libxml/xmlversion.h': 
No such file or directory

这个 'libxml/xmlversion.h' 找不到,是 libxml2 的一部分。


值得注意的是,安装文档中明确提到:

可以考虑使用来自 PyPI 的二进制版本,或者 Christoph Gohlke 慷慨提供的非官方 Windows 二进制版本。

所以,你认为 Christoph Gohlke 没有提供 lxml 的二进制版本,说明你可能没有找到这些文档。


所以,有可能你确实安装了 libxml2,但安装方式不被 lxml2 的设置脚本识别。但所有证据表明,你更可能是根本没有安装它。

6

如果你在使用 Python 3.4,这里有一个下载链接:

点击这里下载

如果你有其他的配置需求,可以根据你的需要在 这里 找到相关信息。;-)

9

我也遇到了这个问题,不过上面提供的解决办法对我来说都不管用。

这是我的系统配置:

  • Win7 64位
  • python3.3
  • visual studio 2013

我试着用相关问题中第一个链接里的方法,但失败了。这个方法是为vs2010创建一个系统变量,而这个变量其实是从我在visual studio 2013中的原始配置复制过来的。

但是,命令行提示出错,显示“libxml/xmlversion.h”没有这样的文件或目录。

然后我在网上进一步搜索,找到了一个对我有用的方法。

  1. 下载预编译的lxml插件

    预编译的lxml 3.5: https://pypi.python.org/pypi/lxml/3.3.5#downloads

    如果你的系统是64位的,可以在这里找到一个非官方的x64版本:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml(这就是我用的)

  2. 在命令行中用命令安装easy_install lxml-3.2.1.win32-py3.3.‌exe

    参考链接: https://pytools.codeplex.com/workitem/1520

撰写回答