无法在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,它不再给我这个选项。
有谁知道我需要做什么?
您应该安装或升级xcode的命令行工具。 在terminal上试试这个:
xcode-select --install
我通过brew来安装和链接libxml2
和libxslt
来解决优胜美地上的这个问题:
brew install libxml2 brew install libxslt brew link libxml2 --force brew link libxslt --force
如果您已经使用此方法解决了问题,但是稍后再次popup,则可能需要在上述四行之前运行此操作:
brew unlink libxml2 brew unlink libxslt
如果您在使用自制软件时遇到许可错误,特别是在El Capitan, 这是一个有用的文档 。 从本质上讲,无论OS X版本,尝试运行:
sudo chown -R $(whoami):admin /usr/local
你可以通过在命令行上运行来解决你的问题:
STATIC_DEPS=true pip install lxml
它确实帮助了我。 对文档的解释
我尝试了上面的大部分解决scheme,但没有一个为我工作。 我正在使用Yosemite 10.10,唯一能解决这个问题的scheme就是在terminal上input:
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等的内部,但是这里的includepath是错误的。 我做了下面的丑陋的黑客,让我坚持到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
全局安装… 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
在http://lxml.de/installation.html上的安装说明解释:;
为了加快testing环境中的构build,例如在持续集成服务器上,通过设置CFLAGS环境variables禁用C编译器优化:
CFLAGS="-O0" pip install lxml
以上都没有为我工作在10.9.2,作为编译出来以下错误:
clang: error: unknown argument: '-mno-fused-madd'
这实际上导致了最干净的解决scheme(参见[1]中的更多细节):
export CFLAGS=-Qunused-arguments export CPPFLAGS=-Qunused-arguments pip install lxml
或者如果安装在全球
sudo pip install lxml
[1] 铛错误:未知参数:'-mno-fused-madd'(python软件包安装失败)
xcode-select --install sudo easy_install pip sudo pip install lxml
我通过运行以下命令在Yosemite
解决了这个问题:
xcode-select install #this may take several minutes. pip install lxml
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
但是,这绝对有效……像一个魅力:
ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future pip install lxml
不幸的是xcode-select --install
不工作,因为我已经有了最新版本。
这很奇怪,但我通过打开XCode并接受条款和条件来解决问题。 重新运行pip install lxml
之后没有返回错误。
用自制软件,libxml2是隐藏的,不会干扰系统libxml2,所以pip必须帮助一下才能find它。
用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
我正在使用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的修复类似,但不会永久地改变你的系统。
我遇到了同样的问题,经过几天的工作,我用Python 3.4.1在OS X 10.9.4上解决了这个问题。
这是我的解决scheme,
根据从lxml.de 安装lxml ,
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
,它应该可以正常工作。
在编译之前,将xmlversion.h的path添加到您的环境中。
$ set INCLUDE=$INCLUDE:/private/tmp/pip_build_root/lxml/src/lxml/
但请确保我提供的path中有xmlversion.h文件。 然后,
$ python setup.py install
pip
没有为我工作。 我去了https://pypi.python.org/pypi/lxml/2.3并下载了macosx .egg文件:
然后使用命令行easy_install
来安装.egg
文件。
这篇文章链接到一个解决scheme, 在Mac OS X 10.9上为我工作Python3,lxml和“Symbol not found:_lzma_auto_decoder”
心连心
从pip(lxml 3.6.4)成功安装后,导入lxml.etree模块时出现错误。
我一直在寻找无尽的安装这个作为scrapy的必要条件,并尝试所有的select,但最后这个工作对我来说(mac osx 10.11 python 2.7):
$ STATIC_DEPS=true sudo easy_install-2.7 "lxml==2.3.5"
旧版本的lxml似乎与etree模块一起工作。
PIP通常可以忽略软件包的指定版本,例如,在PIP高速caching中具有较新的版本,因此easy_install
。 '-2.7'
选项适用于python版本,如果您正在安装python 3.x,请省略此选项。
就我而言,在安装lxml之前,我必须先closures卡巴斯基反病毒 :
pip install lxml
尝试:
% STATIC_DEPS=true pip install lxml
要么:
% STATIC_DEPS=true sudo pip install lxml
有用!