无法在Mac OS x 10.9上安装Lxml

时间:2013-10-23 17:07:32

标签: python xcode macos scrapy 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,它不再给我这个选项了。

有谁知道我需要做什么?

23 个答案:

答案 0 :(得分:499)

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

xcode-select --install

答案 1 :(得分:193)

我通过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,this is a helpful document。实质上,无论OS X版本如何,请尝试运行:

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

答案 2 :(得分:100)

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

 STATIC_DEPS=true pip install lxml

这对我有帮助。 关于docs

的解释

答案 3 :(得分:48)

我尝试了上面的大多数解决方案,但它们都没有为我工作。我正在运行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。

答案 4 :(得分:24)

这一直困扰着我。我不知道内部有关python distutils等的内容,但这里的include路径是错误的。我做了以下丑陋的黑客来阻止我,直到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

答案 5 :(得分: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

答案 6 :(得分:12)

<{3}}上的

安装说明解释:

  

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

CFLAGS="-O0" pip install lxml

答案 7 :(得分: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 error: unknown argument: '-mno-fused-madd' (python package installation failure)

答案 8 :(得分:10)

xcode-select --install
sudo easy_install pip
sudo pip install lxml

答案 9 :(得分:5)

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

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

答案 10 :(得分:3)

使用自制软件时,隐藏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

答案 11 :(得分:2)

OSX 10.9.2

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

答案 12 :(得分:2)

我在这个页面上尝试了所有答案,但没有一个能为我工作。我正在运行OS X版本10.9.2

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

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

答案 13 :(得分:2)

不幸的是xcode-select --install对我来说不起作用,因为我已经有了最新版本。

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

答案 14 :(得分:1)

在我的情况下,我必须关闭Kaspersky Antivirus 才能安装lxml:

pip install lxml

答案 15 :(得分:1)

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

我无休止地搜索安装这个作为scrapy的必备条件,并尝试了所有选项,但最终这对我有用(mac osx 10.11 python 2.7):

DataPoints

旧版本的lxml似乎与etree模块一起使用。

Pip通常可以忽略指定的包版本,例如,当您在pip缓存中有较新版本时,$ STATIC_DEPS=true sudo easy_install-2.7 "lxml==2.3.5" easy_install选项适用于python版本,如果要安装python 3.x,则省略此选项。

答案 16 :(得分:0)

在多次撕开头发和咬紧牙关之后,我用pip卸载了xcode并运行:

public class QuestionsListActivity extends BaseActivity implements QuestionsListViewMvcImpl.Listener { private StackoverflowApi mStackoverflowApi; private QuestionsListViewMvc questionsListViewMvc; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); questionsListViewMvc = getCompositionRoot().getViewMvcFactory().getQuestionListViewMvc(null); questionsListViewMvc.registerListener(this); mStackoverflowApi = getCompositionRoot().getStackoverflowApi(); setContentView(questionsListViewMvc.getRootView()); } @Override protected void onStart() { super.onStart(); fetchQuestions(); } private void fetchQuestions() { mStackoverflowApi.fetchLastActiveQuestions(Constants.QUESTIONS_LIST_PAGE_SIZE) .enqueue(new Callback<QuestionsListResponseSchema>() { @Override public void onResponse(Call<QuestionsListResponseSchema> call, Response<QuestionsListResponseSchema> response) { if (response.isSuccessful()) { bindQuestions(response.body().getQuestions()); } else { networkCallFailed(); } } @Override public void onFailure(Call<QuestionsListResponseSchema> call, Throwable t) { networkCallFailed(); } } ); } private void bindQuestions(List<QuestionSchema> questionSchemas) { List<Question> questions = new ArrayList<>(questionSchemas.size()); for (QuestionSchema questionSchema : questionSchemas) { questions.add(new Question(questionSchema.getId(), questionSchema.getTitle())); } questionsListViewMvc.bindQuestions(questions); } private void networkCallFailed() { Toast.makeText(this, R.string.error_network_call_failed, Toast.LENGTH_SHORT).show(); } @Override public void onQuestionClicked(Question question) { QuestionDetailsActivity.start(this, question.getId()); } }

一切都很好。

答案 17 :(得分:0)

这篇文章链接到一个对我有用的解决方案 Python3, lxml and "Symbol not found: _lzma_auto_decoder" on Mac OS X 10.9

HTH

答案 18 :(得分: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文件。

答案 19 :(得分:0)

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

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

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

$ python setup.py install

答案 20 :(得分:0)

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

这是我的解决方案,

根据lxml.de的installing 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 ,就可以正常使用。

答案 21 :(得分: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&#39;修复,但不会永久改变您的系统。

答案 22 :(得分:-1)

尝试:

% STATIC_DEPS=true pip install lxml

或者:

% STATIC_DEPS=true sudo pip install lxml

有效!