よしだです

プログラミングの勉強してます

pythonにsqlite3が無いと怒られる

djangoのインストールが終わったので早速チュートリアルをやろうとしたら、変なエラーが出る。

Traceback (most recent call last):
  File "/home/vagrant/.virtualenvs/django/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 33, in <module>
    from sqlite3 import dbapi2 as Database
  File "/usr/local/bin/python-3.6.2/lib/python3.6/sqlite3/__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "/usr/local/bin/python-3.6.2/lib/python3.6/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'

どうやらsqlite3が無いらしい・・・。

調べてみると、Pythonをソースからコンパイルして導入した場合、sqliteとかは自力でインストールしないとダメらしい。

なので、インストールします。

pip install sqlite3 libsqlite3-dev libsqlite3
python
>>> import sqlite3

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/bin/python-3.6.2/lib/python3.6/sqlite3/__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "/usr/local/bin/python-3.6.2/lib/python3.6/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'

ダメやんけ!

どうやら、コンパイル前にインストール済みじゃ無いとダメらしいです。

仕方ないのでpython削除 ついでに今のうちに他にも必要そうなpackageをインストール

sudo rm -rf /usr/local/bin/python-3.6.2
sudo apt-get -y install build-essential libsqlite3-dev libreadline6-dev libgdbm-dev zlib1g-dev zlibbz2-dev sqlite3 tk-dev zip libssl-dev gfortran liblapack-dev

コンパイルし直し

sudo wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
tar xvzf Python-3.6.2.tgz
cd Python-3.6.2
./configure --prefix=/usr/local/bin/python-3.6.2
make
sudo make install

なんとかなりました。 これでやっとDjangoに触れる・・・。