LoginSignup
9
8

More than 5 years have passed since last update.

pipでlxmlを入れるとlibxml/xmlversion.hがないと怒られた時の対処

Last updated at Posted at 2014-11-21

あるある

scrapy利用するにはlxmlが必要なのですが、lxmlがいんすとーるできない。。。

ネット上でよく見られる解決策が

brew install libxml2 libxslt

で必要なプログラムをインストールすればOKという話。Macの場合、

xcode-select --install

でOKだよっていうのはほとんど。ただ、もうそのプログラムを提供していないよというメッセージがでて上記のコマンドは実行できない。そこで他の解決策が必要になります。

私の場合、brewで入れたlibxml2のバージョンと/usr/local/bin/xslt-configで指定されていたlibxmlのバージョンが違っていました。 (たぶん、直接これが原因というか、いじりまくってむちゃくちゃになっていた)
なお、pip installのときにどこを参照しているかは~/.pip/pip.logを見ればわかります。


以下の2つの対処が考えられます。

  1. /usr/local/bin/xslt-config内で参照しているbrewでインストールしたlibxml2のバージョン指定を修正する

  2. brew remove libxml2で一旦アンインストールし、/usr/local/bin/xslt-config内のバージョンに合わせたlibxml2をインストールする。

1についてはlxmlのインストール自体は成功しましたが、他のプログラムとの依存関係のせい?でscrapyでstartprojectコマンドが実行できず、以下のエラーが出ました。

ImportError: dlopen(/Users/username/.virtualenvs/testenv/lib/python2.7/site-packages/lxml/etree.so, 2): Library not loaded: /usr/local/opt/libxml2/lib/libxml2.2.dylib
  Referenced from: /usr/local/opt/libxslt/lib/libxslt.1.dylib
  Reason: Incompatible library version: libxslt.1.dylib requires version 12.0.0 or later, but libxml2.2.dylib provides version 11.0.0

2つ目の解決策はうまくいきました!!

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8