scrapyの導入と標準入出力で躓いたこと
結論
環境
CentOS 6 Python 3.6.4 Scrapy 1.5.0
経緯
Scrapyを仮想環境で試そうとしたところ、環境を整え直す羽目になったのでφ(..)メモメモと。
発生した問題
ModuleNotFoundError: No module named ‘_sqlite3'
scrapy shellを実行したところ、以下のエラーが発生。 SQLite3の開発用ツールとPython3の再インスコが必要。
(略) File "/home/vagrant/.pyenv/versions/3.6.4/lib/python3.6/sqlite3/dbapi2.py", line 27, in <module> from _sqlite3 import * ModuleNotFoundError: No module named '_sqlite3'
標準入出力の文字化け
cssセレクタを使い日本語の抽出を行ったところ、文字化けが発生。 こちらは環境変数でエンコーディングの指定が必要。
対応方法
ModuleNotFoundError: No module named ‘_sqlite3'
SQLite開発用ツールを入れた後改めて、Pythonのコンパイル、インストール。
sudo yum install sqlite-devel -y sudo rm -rf ~/.pyenv/shims/ /bin/bash -lc "pyenv install 3.6.4 && pyenv rehash && pyenv global 3.6.4"
標準入出力の文字化け
標準入力/標準出力/標準エラー出力用環境変数の上書き指定。 bashrcに追記。
export PYTHONIOENCODING=utf-8
おまけ
ファイルやjsonを使用した際の出力でも文字化けが起こるので以下の設定をsettings.pyへ追記する。
FEED_EXPORT_ENCODING = 'utf-8'
参考
pythonにsqlite3が無いと怒られる - よしだです