CentOS7で scrapy 環境を構築するメモ
AWS の EC2(CentOS7)で scrapy 環境を構築したら、思いの外こけたのでメモ。Mac だとpip install scrapy
で一発だったんですが・・・
環境
- Red Hat Enterprise Linux Server release 7.3 (Maipo)
- Python 2.7.5
- Scrapy 1.3.3
要約
下記コマンドでいけるかと
1 2 3 4 5 6 7 |
$ sudo yum install gcc $ sudo yum install python-devel $ sudo pip install scrapy $ sudo pip install Twisted==16.4.1 $ scrapy version Scrapy 1.3.3 |
エラーの経緯
とりあえず、pip でインストールを試みます。
1 2 |
$ sudo pip install scrapy |
1 2 3 4 5 6 7 8 9 10 11 12 |
creating build/temp.linux-x86_64-2.7 creating build/temp.linux-x86_64-2.7/src creating build/temp.linux-x86_64-2.7/src/twisted creating build/temp.linux-x86_64-2.7/src/twisted/test gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.7 -c src/twisted/test/raiser.c -o build/temp.linux-x86_64-2.7/src/twisted/test/raiser.o unable to execute gcc: No such file or directory error: command 'gcc' failed with exit status 1 ---------------------------------------- Failed building wheel for Twisted ... Command "/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-0tIlQY/Twisted/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-iV87PO-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-0tIlQY/Twisted/ |
まずは gcc がないと言って怒られました。デフォルトで入っていないんですね。yum でインストールしました。
1 2 |
$ sudo yum install gcc |
インストール後、再度 pip で scrapy をインストールしようとしたところ、下記エラーが出ました。
1 2 3 4 5 6 7 8 9 |
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.7 -c src/twisted/test/raiser.c -o build/temp.linux-x86_64-2.7/src/twisted/test/raiser.o src/twisted/test/raiser.c:4:20: fatal error: Python.h: No such file or directory #include "Python.h" ^ compilation terminated. error: command 'gcc' failed with exit status 1 ---------------------------------------- Command "/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-Um4MS8/Twisted/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-ED4K2U-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-Um4MS8/Twisted/ |
Python.h が無いと言われました。調べてみたところ、python-devel というパッケージを入れれば良いようだったので、yum で追加しました。
1 2 |
$ sudo yum install python-devel |
インストール後、再度 pip で scrapy をインストール、エラー無く終了。
しかし、scrapy version
でバージョンを確認しようとしたところ、下記エラーが出ました。
1 2 3 4 5 6 |
File "/usr/lib64/python2.7/site-packages/twisted/protocols/tls.py", line 63, in <module> from twisted.internet._sslverify import _setAcceptableProtocols File "/usr/lib64/python2.7/site-packages/twisted/internet/_sslverify.py", line 38, in <module> TLSVersion.TLSv1_1: SSL.OP_NO_TLSv1_1, AttributeError: 'module' object has no attribute 'OP_NO_TLSv1_1' |
OpenSSL 関連のエラーっぽいですね。検索したところ、scrapy の issue がひっかかりました。
このサイトによると、解決策が幾つかあるみたいでしたが、私は Twisted をダウングレードすることで解決できました。
1 2 |
sudo pip install Twisted==16.4.1 |
というわけで、上記要約の手順でいけるかと思います。何か抜けてたり不必要な手順があればコメントください。
最後まで読んでいただきありがとうございます。 このブログを「いいな」と感じていただけましたら、Twiter にてフォローいただけるとうれしいです。ブログ更新情報などもお届けします。
Follow @ryuta461
この記事をシェアする