在Windows x86(32位)上使用Visual Studio C++ 2010 Express为Python 3.4安装lxml
相关内容
相关问题:
相关答案:
相关评论:
- 在 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 或其他)
- 在 PyPi 上没有
也不在 Chris 的网站上
更新 2019年10月16日
正如评论者所说,执行文件的链接不再可用
- 这个存档版本(来自 2014 年;执行文件链接失效)显示了旧链接
- 正如评论者所说;该网站 目前有
whl
(轮子)文件供lxml
库使用;你可以 使用pip
从whl
文件安装 - 或者查看 这个链接集合,获取
pypi.org
上的可执行文件;可执行文件仅支持 2.6、2.7、3.2、3.3 和 3.4
看起来 Chris 确实 在这里提供了一个直接的 exe:
http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
谢谢你,Chris!你知道我为什么无法通过 pip 编译吗?
3 个回答
简单来说,你需要先安装 C 库 libxml2
(还有 libxslt2
),才能构建 lxml
。
根据 lxml
的安装文档,说得很清楚:
除非你使用的是静态的二进制版本(比如从 Windows 的安装程序获取),否则你需要安装
libxml2
和libxslt
,具体来说:
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
的设置脚本识别。但所有证据表明,你更可能是根本没有安装它。
我也遇到了这个问题,不过上面提供的解决办法对我来说都不管用。
这是我的系统配置:
- Win7 64位
- python3.3
- visual studio 2013
我试着用相关问题中第一个链接里的方法,但失败了。这个方法是为vs2010创建一个系统变量,而这个变量其实是从我在visual studio 2013中的原始配置复制过来的。
但是,命令行提示出错,显示“libxml/xmlversion.h”没有这样的文件或目录。
然后我在网上进一步搜索,找到了一个对我有用的方法。
下载预编译的lxml插件
预编译的lxml 3.5: https://pypi.python.org/pypi/lxml/3.3.5#downloads
如果你的系统是64位的,可以在这里找到一个非官方的x64版本:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml(这就是我用的)
在命令行中用命令安装easy_install lxml-3.2.1.win32-py3.3.exe