首页 > 解决方案 > Jupyter Notebook 安装中断 sqlite3

问题描述

使用以下代码,我安装了一个专用的 conda 环境:

conda config --set ssl_verify no
conda create --name kmkplot
conda activate kmkplot
conda install -c plotly plotly=4.0.0
conda install -c conda-forge geopandas
conda install -c conda-forge jupyter

启动 Jupyter,我收到以下错误:

(kmkplot) C:\Users\userabc>jupyter notebook
Traceback (most recent call last):
  File "C:\Users\userabc\.conda\envs\kmkplot\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 9, in <module>
    import sqlite3
  File "C:\Users\userabc\.conda\envs\kmkplot\lib\sqlite3\__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "C:\Users\userabc\.conda\envs\kmkplot\lib\sqlite3\dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: DLL load failed: The specified procedure could not be found.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\userabc\.conda\envs\kmkplot\Scripts\jupyter-notebook-script.py", line 6, in <module>
    from notebook.notebookapp import main
  File "C:\Users\userabc\.conda\envs\kmkplot\lib\site-packages\notebook\notebookapp.py", line 86, in <module>
    from .services.sessions.sessionmanager import SessionManager
  File "C:\Users\userabc\.conda\envs\kmkplot\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 12, in <module>
    from pysqlite2 import dbapi2 as sqlite3
ModuleNotFoundError: No module named 'pysqlite2'

所以,我所做的是创建一个新环境 kmkplot2 来测试 sqlite 是否有效:

conda create --name kmkplot
conda activate kmkplot2

然后在安装 Jupyter 之前测试 sqlite:

(kmkplot2) C:\Users\userabc>python
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>>

它确实如此。那么为什么 Jupyter 安装会中断呢?这正是发生的事情:

conda install -c conda-forge jupyter
...
The following NEW packages will be INSTALLED:
...
sqlite             conda-forge/win-64::sqlite-3.29.0-hfa6e2cd_0
...

如果我已经拥有它,为什么还要再次安装 sqlite?这可能会破坏自己吗?有没有办法阻止它安装sqlite?

Proceed ([y]/n)? y

Downloading and Extracting Packages
terminado-0.8.2      | 22 KB     | ############################################################################ | 100%
wheel-0.33.4         | 52 KB     | ############################################################################ | 100%
setuptools-41.0.1    | 658 KB    | ############################################################################ | 100%
pywinpty-0.5.5       | 46 KB     | ############################################################################ | 100%
notebook-6.0.0       | 7.2 MB    | ############################################################################ | 100%
jsonschema-3.0.1     | 103 KB    | ############################################################################ | 100%
certifi-2019.6.16    | 149 KB    | ############################################################################ | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: | b'Enabling notebook extension jupyter-js-widgets/extension...\n      - Validating: ok\n'
done 

(kmkplot2) C:\Users\userabc>conda list
# packages in environment at C:\Users\userabc\.conda\envs\kmkplot2:
...
sqlite                    3.29.0               hfa6e2cd_0    conda-forge
...

(kmkplot2) C:\Users\userabc>python
Python 3.7.3 | packaged by conda-forge | (default, Jul  1 2019, 22:01:29) [MSC v.1900 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'sqlite'

>>> exit()

(kmkplot2) C:\Users\userabc>jupyter notebook
Traceback (most recent call last):
  File "C:\Users\userabc\.conda\envs\kmkplot2\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 9, in <module>
    import sqlite3
  File "C:\Users\userabc\.conda\envs\kmkplot2\lib\sqlite3\__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "C:\Users\userabc\.conda\envs\kmkplot2\lib\sqlite3\dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: DLL load failed: The specified procedure could not be found.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\userabc\.conda\envs\kmkplot2\Scripts\jupyter-notebook-script.py", line 6, in <module>
    from notebook.notebookapp import main
  File "C:\Users\userabc\.conda\envs\kmkplot2\lib\site-packages\notebook\notebookapp.py", line 86, in <module>
    from .services.sessions.sessionmanager import SessionManager
  File "C:\Users\userabc\.conda\envs\kmkplot2\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 12, in <module>
    from pysqlite2 import dbapi2 as sqlite3
ModuleNotFoundError: No module named 'pysqlite2'

任何想法接下来要尝试什么?

标签: pythonjupyter

解决方案


在查看我上面的问题文本后,我注意到报告的 Python 版本是 2.7.x 但在 Jupyter 安装之后是 3.7.x 所以我强制使用 Python 版本 3.4.3(只是因为我知道这是一个版本,现在 Jupyter 在重新启动之后-安装 Jupyter。我仍然遇到一些其他错误,但可以关闭这个特定问题。


推荐阅读