結論
- ライブラリのインスコ
- Pythonの再インスコ
- 環境変数の設定
環境
- CentOS 6
- Python 3.6.4
- Scrapy 1.5.0
経緯
Scrapyを仮想環境で試そうとしたところ、環境を整え直す羽目になったのでφ(..)メモメモと。
発生した問題
ModuleNotFoundError: No module named ‘_sqlite3'
scrapy shellを実行したところ、以下のエラーが発生。
SQLite3の開発用ツールとPython3の再インスコが必要。
ModuleNotFoundError
(略)
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
参考
http://yoshida-ahiru.hatenablog.com/entry/2017/08/13/020007
https://qiita.com/methane/items/6e294ef5a1fad4afa843
https://docs.python.org/ja/3.6/using/cmdline.html#envvar-PYTHONIOENCODING