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安装并连接了
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 |
我在
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并接受条款和条件解决了这个问题。重新运行
在我的情况下,在安装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缓存中拥有较新版本时,因此
在编译之前,将到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
然后使用命令行
我使用的是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编译工具,请使用
首先,我通过
然后我只需键入
现在,只要输入
尝试:
1 | % STATIC_DEPS=true pip install lxml |
或:
1 | % STATIC_DEPS=true sudo pip install lxml |
它起作用了!