9
6

More than 5 years have passed since last update.

pyenv, pipenv 環境でjupyter notebook使う時にsqliteに関するエラーが出たとき

Last updated at Posted at 2019-04-18

環境

  • ubuntu 18.04
  • pyenv 1.2.9-2-g6309aaf2
  • pipenv, version 2018.11.26

jupyter 関連

  • jupyter 1.0.0
  • jupyter-core 4.4.0
  • ipywidgets 7.4.2

エラー

pipenvでpython 3.6.8を使ってjupyter notebookを起動しようと
しているところ。

(someenv)$ jupyter notebook
Traceback (most recent call last):
  File "/home/hoge/.local/share/virtualenvs/someenv-EUFWfC8N/lib/python3.6/site-packages/notebook/services/sessions/sessionmanager.py", line 10, in <module>
    import sqlite3
  File "/home/hoge/.pyenv/versions/3.6.8/lib/python3.6/sqlite3/__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "/home/hoge/.pyenv/versions/3.6.8/lib/python3.6/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/hoge/.local/share/virtualenvs/someenv-EUFWfC8N/bin/jupyter-notebook", line 6, in <module>
    from notebook.notebookapp import main
  File "/home/hoge/.local/share/virtualenvs/someenv-EUFWfC8N/lib/python3.6/site-packages/notebook/notebookapp.py", line 86, in <module>
    from .services.sessions.sessionmanager import SessionManager
  File "/home/hoge/.local/share/virtualenvs/someenv-EUFWfC8N/lib/python3.6/site-packages/notebook/services/sessions/sessionmanager.py", line 13, in <module>
    from pysqlite2 import dbapi2 as sqlite3
ModuleNotFoundError: No module named 'pysqlite2'

解決策

原因はsqliteが入っていなかったからなのだが、pythonのインタプリタも再インストしないといけないのが注意点。

1.sqlite入れる

ここを参考にしてsqliteとその依存を入れる。

$ sudo apt install libsqlite3-dev libreadline6-dev libbz2-dev libssl-dev libsqlite3-dev libncursesw5-dev libffi-dev libdb-dev libexpat1-dev zlib1g-dev liblzma-dev libgdbm-dev libmpdec-dev

2.pythonインタプリタ一旦消す

pythonインタプリタのsetup時にsqlite関連のパッケージがあると、使えるようにしてくれるみたいなので、pyenvで使おうとしているpythonインタプリタを一旦消していれ直す。

$ pyenv versions
* system (set by /home/hoge/.pyenv/version)
  3.6.8
  3.7.2
$ pyenv uninstall 3.6.8
pyenv: remove /home/hoge/.pyenv/versions/3.6.8? y
$ pyenv versions
* system (set by /home/hoge/.pyenv/version)
  3.7.2

3.入れ直す

入れ直す。(Pipfileが書いてあるとする。)

$ pipenv install
Warning: Python 3.6.8 was not found on your system...
Would you like us to install CPython 3.6.8 with pyenv? [Y/n]: Y]\
Error: invalid input
Would you like us to install CPython 3.6.8 with pyenv? [Y/n]: Y
Installing CPython 3.6.8 with pyenv (this may take a few minutes)...
✔ Success! 

うごいた。

$ pipenv shell
Launching subshell in virtual environment...
$ jupyter notebook
[I 15:23:07.943 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret
[I 15:23:08.055 NotebookApp] Serving notebooks from local directory: /home/hoge/Works/someenv

おわりに

ぶっちゃけpipenv と pyenvはこのエラーにあんま関係ない。この辺の使って真っさらな環境に新しくjupyter notebook入れようとすると起きやすいとおもう。

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6