【pyenv】pythonビルド後のModuleNotFoundError: No module named '_sqlite3'

投稿日 2022年11月10日 >> 更新日 2022年11月11日

概要

pyenvでインストールしたPythonにて、あるライブラリをインポートしようとしたところ、以下のようなエラーがでました。

  • 「ModuleNotFoundError: No module named '_sqlite3'」

上記の問題に加えて他もモジュールに対しての対処を行っていきます。

実行環境

実行環境
Windows Subsystem for Linux 1
pyenv 2.3.6-4-g904fe964

ModuleNotFoundErrorの回避

当初「ModuleNotFoundError: No module named '_sqlite3'」のようなエラーが出力された時、「sqlite3はPython標準ライブラリのはずなのに?」と不思議に思いつつ色々調べていたら、システム自体にsqlite3を扱う為の開発ファイルが足りていないせいであるとわかった。

それもそのはずで、pyenvでお求めのPythonバージョンをインストールされる最中のログに以下のようなワーニングが出力されていたのである。

$ pyenv install 3.7.1
Downloading Python-3.7.1.tar.xz...
-> https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
Installing Python-3.7.1...
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python curses extension was not compiled. Missing the ncurses lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
WARNING: The Python tkinter extension was not compiled and GUI subsystem has been detected. Missing the Tk toolkit?
WARNING: The Python lzma extension was not compiled. Missing the lzma lib?
Installed Python-3.7.1 to /home/kenno/.pyenv/versions/3.7.1

4つ目のWARNINGに「WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?」、翻訳すると「警告: Python sqlite3 拡張機能はコンパイルされていません。 SQLite3 ライブラリがありませんか?」という警告文を出している。

この場合sqlite3の開発ファイルをビルドせずにPythonバージョンが作成されてしまったため、そのPythonバージョンではsqlite3の開発ファイルをシステムにインストールしても問題のエラーは解消されないのである。

なのでsqlite3の開発ファイルである「libsqlite3-dev」をシステムにインストールした後に、もう一度お求めのPythonバージョンをインストールする必要があります。

$ sudo apt install libsqlite3-dev

$ pyenv uninstall 3.7.1

$ pyenv install 3.7.1

Pythonバージョンをインストールする前に推奨されているビルド環境

以下pyenvの公式にもあるように、Pythonバージョンをインストールする前に各Python標準ライブラリに必要な開発ファイルをシステムにインストールしておく必要があります。

$ sudo apt update

$ sudo apt install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

無事インストールが完了したら、お求めのPythonバージョンをインストールします。

$ pyenv install 3.7.0

以上となります。

最後までご覧いただきありがとうございました。

一覧へ戻る