关于python:无法在Mac OS X 10.9上安装Lxml

Cannot install Lxml on Mac os x 10.9

我想安装lxml,这样我就可以安装scrapy了。

当我今天更新Mac时,它不允许我重新安装lxml,我得到以下错误:

1
2
3
4
5
6
In file included from src/lxml/lxml.etree.c:314:
/private/tmp/pip_build_root/lxml/src/lxml/includes/etree_defs.h:9:10: fatal error: 'libxml/xmlversion.h' file not found
#include"libxml/xmlversion.h"
         ^
1 error generated.
error: command 'cc' failed with exit status 1

我尝试使用BREW安装libxml2和libxslt,两者都安装得很好,但仍然无法安装lxml。

上次我安装Xcode时,我需要在Xcode上启用开发人员工具,但自从它更新到Xcode5之后,它不再给我这个选项了。

有人知道我要做什么吗?


您应该安装或升级Xcode的命令行工具。在终端中尝试此操作:

1
xcode-select --install


我通过BREW安装并连接了libxml2libxslt,在约塞米蒂解决了这个问题:

1
2
3
4
brew install libxml2
brew install libxslt
brew link libxml2 --force
brew link libxslt --force

如果您已使用此方法解决了问题,但稍后会再次弹出,则可能需要在上述四行之前运行此方法:

1
2
brew unlink libxml2
brew unlink libxslt

如果您在自制时出现权限错误,尤其是在El Capitan上,这是一个有用的文档。本质上,无论OS X版本如何,尝试运行:

1
sudo chown -R $(whoami):admin /usr/local


您可以通过在命令行上运行以下命令来解决问题:

1
 STATIC_DEPS=true pip install lxml

它确实帮助了我。文件说明


我尝试了上面的大多数解决方案,但没有一个对我有用。我正在运行Yosemite 10.10,唯一对我有用的解决方案是在终端中键入:

1
sudo CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2 CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install lxml

编辑:如果您使用的是virtualenv,则不需要开头的sudo。


这也困扰了我一段时间。我对python distutils等的内部结构还不够了解,但是这里的include路径是错误的。我做了下面的丑陋的黑客来阻止我,直到PythonLXML的人能够做正确的修复。

1
sudo ln -s  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2/libxml/ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml


正在全局安装…OSX7.9

1
2
3
xcode-select --install
sudo easy_install pip
sudo CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2 CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install lxml


http://lxml.de/installation.html上的安装说明解释:

To speed up the build in test environments, e.g. on a continuous integration server, disable the C compiler optimisations by setting the CFLAGS environment variable:

1
CFLAGS="-O0" pip install lxml


在10.9.2版本中,上述任何一项都不起作用,因为编译错误如下:

1
clang: error: unknown argument: '-mno-fused-madd'

这实际上导致了最干净的解决方案(请参阅[1]中的更多详细信息):

1
2
3
4
export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments

pip install lxml

如果在全局安装,则执行以下操作

1
sudo pip install lxml

[1]clang错误:未知参数:"-mno fused madd"(python包安装失败)


1
2
3
xcode-select --install
sudo easy_install pip
sudo pip install lxml


我在Yosemite上通过运行以下命令解决了这个问题:

1
2
xcode-select install #this may take several minutes.
pip install lxml


对于自制,libxml2是隐藏的,不会干扰系统libxml2,因此必须稍微帮助pip才能找到它。

用BASH:

1
LDFLAGS=-L`brew --prefix libxml2`/lib CPPFLAGS=-I`brew --prefix libxml2`/include/libxml2 pip install --user lxml

与鱼:

1
env LDFLAGS=-L(brew --prefix libxml2)/lib CPPFLAGS=-I(brew --prefix libxml2)/include/libxml2 pip install --user lxml

OSX7.9

1
sudo env ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future STATIC_DEPS=true pip install lxml

我试过这一页上的所有答案,没有一个对我有用。我正在运行OS X版本10.9.2

但这绝对有效……就像魅力:

archflags=-wno error=unused command line自变量hard error in future pip install lxml


不幸的是,由于我已经有了最新版本,所以xcode-select --install不适合我。

这很奇怪,但我通过打开Xcode并接受条款和条件解决了这个问题。重新运行pip install lxml后没有返回错误。


在我的情况下,在安装LXML之前,我必须关闭Kaspersky Antivirus,方法是:

1
pip install lxml

从PIP(lxml 3.6.4)成功安装后,导入lxml.etree模块时出错。

我一直在不断地寻找将其作为Scrapy的必备组件来安装,并尝试了所有的选项,但最终这对我很有效(Mac OSX 10.11 python 2.7):

1
$ STATIC_DEPS=true sudo easy_install-2.7"lxml==2.3.5"

旧版本的lxml似乎与etree模块一起工作。

PIP通常可以忽略包的指定版本,例如,当您在PIP缓存中拥有较新版本时,因此easy_install'-2.7'选项用于python版本,如果要安装python 3.x,请忽略此选项。


在编译之前,将到xmlversion.h的路径添加到您的环境中。

1
$ set INCLUDE=$INCLUDE:/private/tmp/pip_build_root/lxml/src/lxml/

但请确保我提供的路径中有xmlversion.h文件。然后,

1
$ python setup.py install

埃多克斯一〔11〕没有为我工作。我去了https://pypi.python.org/pypi/lxml/2.3版下载了macosx.egg文件:

https://pypi.python.org/packages/2.7/l/lxml/lxml-2.3-py2.7-macosx-10.6-intel.egg md5=52322E4698D68800C6B6AEDBE5F34

然后使用命令行easy_install安装.egg文件。


我使用的是OSX 10.9.2,得到了相同的错误。

Xcode命令行工具的安装对于这个特定版本的OSX没有帮助。

我认为解决此问题的更好方法是使用以下命令进行安装:

1
$ CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2 pip install lxml

这类似于jdkoftinoff的修复,但不会永久地改变您的系统。


这篇文章链接到一个适合我的解决方案python3、lxml和"找不到符号:Mac OS X 10.9上的_lzma_auto_decoder"

高温高压


我遇到了同样的问题,经过几天的工作,我用Python3.4.1在我的OSX10.9.4上解决了这个问题。

这是我的解决方案,

根据从lxml.de安装lxml,

A macport of lxml is available. Try something like port install py25-lxml

如果没有macport,请从macport.org安装。这很容易。您可能还需要一个编译器,要安装Xcode编译工具,请使用xcode-select --install

首先,我通过sudo port selfupdate将端口更新为最新版本,

然后我只需键入sudo port install libxml2,几分钟后您就会看到libxml2安装成功。可能还需要libxslt来安装lxml。要安装libxslt,请使用:sudo port install libxslt

现在,只要输入pip install lxml,就可以了。


尝试:

1
% STATIC_DEPS=true pip install lxml

或:

1
% STATIC_DEPS=true sudo pip install lxml

它起作用了!