237

我想安装 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,它不再给我这个选项。

有谁知道我需要做什么?

4

23 回答 23

503

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

xcode-select --install
于 2013-10-26T09:10:16.523 回答
194

libxml2我通过安装和链接以及libxslt通过 brew在 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
于 2014-10-24T08:23:57.317 回答
104

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

 STATIC_DEPS=true pip install lxml

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

于 2013-10-23T19:05:26.933 回答
49

我尝试了上述大多数解决方案,但没有一个对我有用。我正在运行 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。

于 2014-11-09T18:15:12.167 回答
24

这也困扰了我一段时间。我对 python distutils 等的内部了解不够,但是这里的包含路径是错误的。我做了以下丑陋的黑客攻击来阻止我,直到 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
于 2013-10-23T18:31:33.963 回答
19

全局安装... 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
于 2014-04-19T23:16:18.363 回答
13

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

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

CFLAGS="-O0" pip install lxml
于 2014-03-15T02:31:59.827 回答
11

在 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] clang 错误:未知参数:'-mno-fused-madd'(python 包安装失败)

于 2014-04-01T16:05:45.827 回答
10
xcode-select --install
sudo easy_install pip
sudo pip install lxml
于 2014-12-26T15:18:59.297 回答
7

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

xcode-select install #this may take several minutes.
pip install lxml
于 2014-10-30T09:32:47.640 回答
4

使用 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
于 2016-05-25T11:28:59.603 回答
2

不幸的是xcode-select --install,我已经有了最新版本,所以对我不起作用。

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

于 2014-11-05T15:21:21.123 回答
2

OSX 10.9.2

sudo env ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future STATIC_DEPS=true pip install lxml
于 2014-04-11T06:33:46.363 回答
2

我尝试了此页面上的所有答案,但没有一个对我有用。我正在运行 OS X 版本 10.9.2

但这绝对有效....就像一个魅力:

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

于 2014-05-16T00:42:11.693 回答
1

就我而言,我必须在安装 lxml 之前关闭 Kaspersky Antivirus ,方法是:

pip install lxml
于 2017-02-25T07:30:41.273 回答
1

After successful install from pip (lxml 3.6.4) I was getting an error when importing the lxml.etree module.

I was searching endlessly to install this as a requisite for scrapy, and tried all the options, but finally this worked for me (mac osx 10.11 python 2.7):

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

The older version of lxml seem to work with etree module.

Pip can often ignore the specified version of a package, for example when you have the newer version in the pip cache, thus the easy_install. The '-2.7' option is for python version, omit this if you are installing for python 3.x.

于 2016-11-10T16:46:45.900 回答
0

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

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

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

$ python setup.py install
于 2014-11-09T19:49:02.970 回答
0

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

这是我的解决方案,

根据从 lxml.de安装 lxml ,

lxml 的 macport 可用。尝试类似 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,它应该可以正常工作。

于 2014-09-19T12:45:55.613 回答
0

我正在使用 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 的修复,但不会永久改变您的系统。

于 2014-03-11T18:11:18.927 回答
0

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文件。

于 2015-06-16T23:25:13.113 回答
0

经过一番撕扯头发和咬牙切齿之后,我用 pip 卸载了 Xcode 并运行:

easy_install lxml

一切都很好。

于 2019-06-30T13:17:47.373 回答
0

这篇文章链接到一个对我有用的解决方案 Python3、lxml 和 Mac OS X 10.9 上的“找不到符号:_lzma_auto_decoder”

hth

于 2016-08-30T18:30:26.897 回答
-1

尝试:

% STATIC_DEPS=true pip install lxml

或者:

% STATIC_DEPS=true sudo pip install lxml

有用!

于 2014-02-05T15:22:14.217 回答