无法在Mac OS X 10.9上安装Lxml

我想安装Lxml,这样我就可以安装Scrapy了。

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

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 5,它不再给我这个选项了。

有人知道我要做什么吗?

100105 次浏览

这也困扰了我一段时间。我不太了解python distutils等的内部原理,但这里的include路径是错误的。我做了以下丑陋的hack,直到python lxml的人能做适当的修复。

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

你可以通过在命令行上运行这个命令来解决你的问题:

 STATIC_DEPS=true pip install lxml
它确实帮助了我。 关于文档

的解释
你应该安装或升级Xcode的命令行工具。 在终端中尝试这个:

xcode-select --install

试一试:

% STATIC_DEPS=true pip install lxml

或者:

% STATIC_DEPS=true sudo pip install lxml

它的工作原理!

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

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

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

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

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

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

为了在测试环境中加速构建,例如在持续集成服务器上,通过设置CFLAGS环境变量禁用C编译器优化:

CFLAGS="-O0" pip install lxml

以上这些在10.9.2中都不适用,因为编译时会出现以下错误:

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

这实际上导致了最干净的解决方案(详见[1]):

export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments


pip install lxml

如果全局安装,则跟随

sudo pip install lxml

[1] 叮当错误:未知参数:'-mno-fused-mad '(安装python包失败)

OSX 10.9.2

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

全球安装…OS x 10.9.2

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

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

但这绝对有效....像个符咒:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install lxml

我遇到了同样的问题,经过几天的工作,我在OS X 10.9.4上用Python 3.4.1解决了这个问题。

这是我的解决方案,

根据安装lxml from lxml.de,

lxml的macport是可用的。尝试端口安装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,它就可以工作了。

我通过brew安装和链接libxml2libxslt解决了Yosemite上的这个问题:

brew install libxml2
brew install libxslt
brew link libxml2 --force
brew link libxslt --force

如果你已经用这个方法解决了问题,但它在稍后的时间再次弹出,你可能需要运行上面的四行之前:

brew unlink libxml2
brew unlink libxslt

如果你在Homebrew上有权限错误,特别是在El Capitan上,这是一份有用的文件。基本上,不管OS X版本是什么,都可以尝试运行:

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

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

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

不幸的是,xcode-select --install不适合我,因为我已经有了最新的版本。

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

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

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是不需要的。

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

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

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

$ python setup.py install
xcode-select --install
sudo easy_install pip
sudo pip install lxml

pip不适合我。我去了 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=52322e4698d68800c6b6aedb0dbe5f34

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

对于homebrew, libxml2是隐藏的,以不干扰系统libxml2,因此必须帮助pip才能找到它。

bash:

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

与鱼:

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

这篇文章链接到一个对我有用的解决方案 Python3, lxml和"符号未找到:_lzma_auto_decoder"在Mac OS X 10.9上 < / p >

hth

从pip (lxml 3.6.4)成功安装后,我在导入lxml时得到一个错误。etree模块。

我无休止地寻找安装这个作为scrapy的必要条件,并尝试了所有的选项,但最终这对我来说是有效的(mac osx 10.11 python 2.7):

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

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

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

在我的例子中,在安装lxml之前,我必须关闭卡巴斯基杀毒软件:

pip install lxml

在咬着牙撕扯头发之后,我用pip卸载了Xcode,然后运行:

easy_install lxml

一切都很好。