Mac OS X 10.9にLXMLをインストールできない


234

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に更新されたため、このオプションは使用できなくなりました。

誰か私が何をする必要があるか知っていますか?


3
PS:私は使用をお勧めします:pip3.4 install lxmlまたはSTATIC_DEPS=true pip3.4 install lxmlあなたがのpython3のための特定のインストールをターゲットにしている場合、コマンド(ご使用のバージョンに適応する、bashのTAB補完はあなたの友達です)。これにより、これらのライブラリを使用しているターゲットプログラムの特定のバージョンをインストールできます。そうしないと、間違ったインタープリターにlibをインストールするのに30分ほどかかります;-)
Phil L. 14

3
他の人が同じ問題を抱えているときにガイダンスとして質問を使用できるように、正解を解決策としてマークしてください:)
Parker

回答:


500

xcode用のコマンドラインツールをインストールまたはアップグレードする必要があります。ターミナルでこれを試してください:

xcode-select --install

24
「ソフトウェアアップデートサーバーから現在利用できないため、ソフトウェアをインストールできません。」というメッセージが表示されます。
kelorek 2013

7
「現在、ソフトウェアアップデートサーバーからソフトウェアを入手できないため、ソフトウェアをインストールできません」というメッセージが表示されることに注意してください。ツールがすでにインストールされている場合。
ウォンバット2014

それらがインストールされている場合は、手動で確認する方法にはいくつかの注意事項- stackoverflow.com/a/20834890/255961
studgeek

1
10.10.3では問題なく動作します。他の人がcflagを操作する必要がある理由がわかりません。
Eric Chen、

1
El Capitan(10.11)にアップグレードした後、私のために働いた。
ルカシュ

193

私は両方のインストールとリンクすることにより、ヨセミテでこの問題を解決libxml2し、libxsltBREWを通じて:

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

この方法を使用して問題を解決したが、後で再びポップアップする場合は、上記の4行のにこれを実行する必要がある場合があります。

brew unlink libxml2
brew unlink libxslt

特にEl CapitanでHomebrewの権限エラーがある場合、これは役立つドキュメントです。基本的に、OS Xのバージョンに関係なく、次を実行してみてください。

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

24
最も役立つ答え。xcode-selectが非常に多くの票を獲得する方法は驚くべきことです。brewを使用している場合、x-codeの選択またはインストールはずっと前にすでに行っています。
MarcosEliziárioSantos 2014

5
@MarcosEliziárioSantos「インストール」という単語xcode-select --installは少し誤解を招く可能性があります。MavericksからYosemiteにアップグレードした後、xcode-select --install再度実行してYosemiteのコマンドラインツールにアップグレードする必要があることがわかりました。それは私が遭遇していた問題を(部分的に)解決しました、そしていずれにしても、冗長に実行することは無害でしょう。
Noach Magedman、2015

2
@MarcosEliziárioSantosは、おそらくトップアンサーがほとんどの人の問題を解決したためでしょう。このソリューションは回避策として機能しましたが、数秒後にlibmemcacheで同様の問題に遭遇しました。上の答えは問題を修正しました。誰もが最初に一番上の答えを試した後でのみ、この方法を検討すべきです。
Rafal Es

@MarcosEliziárioSantosもう1つ-私はbrewを使用していますが、フレッシュインストールでした(HomeStoreをインストールするのに十分なAppStoreを介してXCodeのみをインストールしました)。
Rafal Es

また、Homebrewは常に私の許可を台無しにします。Xcodeソリューションを使用しました。
sudo

102

コマンドラインでこれを実行することで問題を解決できます:

 STATIC_DEPS=true pip install lxml

それは確かに私を助けました。ドキュメントの説明


どうもありがとうございます。これにより、信じられないほどの時間を節約できました。
lukecampbell 2015年

OSX 10.9.5で正常に動作
user9869932

ありがとう!macOS 10.14で正常に動作します
jolvera 2018年

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は必要ありません。


1
このソリューションはマーベリックスでも機能します!virtualenvsudo を使用していない場合は必要ありません。
Mauro Baraldi、2015年

OSError: [Errno 1] Operation not permitted: '/usr/bin/build'sudoとしてコマンドを実行しても、鉱山はまだ出力しています。何か案は?
PLPeeters 2015

@PLPeeters実行しているPythonのバージョンとOSのバージョンを教えてください。
robinsj

El Capitanベータ版(10.11です)を使用していて、Python 2.7を使用しています。El Capitanと関係があるかもしれないと思います...
PLPeeters

あなたは命の恩人です。El capitanは動作し、virtualenvではsudoは必要ありません。ありがとう!
jacoor 2015年

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

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

1
これは私にとってはうまくいき、最初に次を使用してxcode devツールを更新する必要がありました:xcode-select --install
erickthered

これでうまくいきました。私はすでにxcodeコマンドラインツールをインストールしていますが、更新する必要があるようです。
Steven Mercatante 2014年


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パッケージのインストール失敗)


ありがとう。これは私を助けました。回答にosバージョンに関するメタが含まれる場合があります。
frankV 2014年

グローバルにインストールする場合は、環境変数を保持するために/etc/sudoerswith が必要になる場合がありsudo visudoます。
swandog 2014年

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

興味深いのはsudo、pipのインストールが必要な人もいれば、そうでない人もいました。(私は直接pip installを実行するときに権限の問題があり、sudoを実行する必要がありました。)遠い昔に、ルートとしてpython関連の何かをインストールし、自分自身ではなくルートとして特定の(システム)フォルダーを作成したと想定できます。
Noach Magedman、2015

これは私にとってはうまくいきました、私は仕事のために新しいMacをセットアップしたばかりで、XCodeをインストールしましたが、コマンドラインツールをインストールしなかったと思いますか?とにかく、これを実行し、ツールをインストールしてから、 'pip3.4 install lxml --user'を再実行すると、sudoやEXPORTINGシェル変数は機能しませんでした。
mgrandi 2015

これは、virtualenvのヨセミテで完全に機能しました。でも私は必要sudoありませんでした。
nil

@NoachMagedman仮想環境にインストールしているため、sudoを使用できません。私がsudoを使用した場合、それは私のグローバルpythonパッケージにインストールされます。これは私が避けようとしていることです。
エステバン

6

Yosemite次のコマンドを実行して、この問題を解決しました。

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

古いシステムで自作のもつれた混乱を作成するのに十分だったので、新しいYosemite 10.10.2のセットアップでは使用しないことにしました。Xcodeパッケージ全体をすでにインストールしているので、必要はありxcode-select installません。最新のlibxml2およびlibxlstパッケージ(lxmlに必要)をダウンロードしましたが、それらをインストールする前に、Yosemiteにそれらのファイルがすでにどこかにあるかどうかを確認したいと思いました。(virtualenvwrapperを使用して)仮想環境を作成し、次に作成しましたpip install lxml。lxmlはエラーなしでインストールされました。私はグーグルのホームページをこすることによってlxmlをテストしました、そしてそれはうまくいきました。
2015

4

自作では、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

2

OSX 10.9.2

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

2

このページのすべての答えを試しましたが、どれもうまくいきませんでした。OS Xバージョン10.9.2を実行しています

しかし、これは間違いなく動作します...魅力のように:

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


1
これは、OS X Mavericksで他の多くのライブラリのコンパイル中に発生した未使用の引数のハードエラーを無効にするだけです。私はそれに遭遇するたびに、それをルックアップする必要はありませんので、それは便利、私のbashプロファイルに行を追加することが分かってきました:export ARCHFLAGS="-Wno-error=unused-command-line-argument-hard-error-in-future"か、このように明示的なアーキテクチャの種類を追加することができますexport ARCHFLAGS="-arch x86_64 -arch i386 -Wno-error=unused-command-line-argument-hard-error-in-future"
ミシェルKauw-A-Tjoe

2

xcode-select --install私はすでに最新バージョンを持っているので、残念ながら私にはうまくいきませんでした。

奇妙ですが、XCodeを開いて利用規約に同意することで問題を解決しました。再実行してpip install lxmlもエラーは返されませんでした。


1

pip(lxml 3.6.4)から正常にインストールした後、lxml.etreeモジュールをインポートするとエラーが発生しました。

私はこれをスクレイピーの必要条件としてインストールするために限りなく探していて、すべてのオプションを試しましたが、最終的にこれは私のために働きました(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 3.xのためにインストールする場合のオプションは、Pythonのバージョン用で、これを省略


1

私の場合、lxmlをインストールする前に、Kaspersky Antivirusをシャットダウンする必要があります。

pip install lxml

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の修正に似ていますが、システムを永続的に変更することはありません。


0

私は同じ質問に出会い、何日か働いた後、この問題をPython 3.4.1を使って私のOS X 10.9.4で解決しました。

これが私の解決策です

lxml.deからlxml をインストールすると

lxmlのmacportが利用可能です。port install py25-lxmlのようなものを試してください

MacPortがない場合は、MacPort.orgからインストールしてください。とても簡単です。XCodeコンパイルツールをインストールするには、コンパイラーが必要な場合もあります。xcode-select --install

まず、ポートを最新バージョンに更新しましたsudo port selfupdate

次に、タイプするだけでsudo port install libxml2、数分後にlibxml2が正常にインストールされます。おそらくlibxsltlxml もインストールする必要があるでしょう。libxsltをインストールするには、次を使用しますsudo port install libxslt

これで、と入力するだけpip install lxmlで問題なく動作するはずです。


0

コンパイルする前に、xmlversion.hへのパスを環境に追加します。

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

ただし、指定したパスにxmlversion.hファイルが含まれていることを確認してください。そして、

$ python setup.py install



0

髪を引きちぎったり歯をぎしぎったりした後、私はピップでxcodeをアンインストールして実行しました:

easy_install lxml

そして、すべてが順調でした。


-1

試してください:

% STATIC_DEPS=true pip install lxml

または:

% STATIC_DEPS=true sudo pip install lxml

できます!


アンドレの答えの複製。
Kar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.