あるある
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つの対処が考えられます。
/usr/local/bin/xslt-config内で参照しているbrewでインストールしたlibxml2のバージョン指定を修正する
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つ目の解決策はうまくいきました!!