在cmd中运行Jupyter Notebook时出现ModuleNotFoundError错误: No module named pysqlite2。

12
问题:
重新安装Anaconda后,我无法再使用命令窗口导航到一个文件夹,其中包含一些.pynb文件,输入jupyter notebook并使其运行。我收到以下错误提示:
C:\scripts\notebooks>jupyter notebook最近的调用记录如下所示:Traceback (most recent call last): File "C:\Users\MYUSERID\AppData\Local\Continuum\anaconda3\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 10, in import sqlite3 File "C:\Users\MYUSERID\AppData\Local\Continuum\anaconda3\lib\sqlite3__init__.py", line 23, in from sqlite3.dbapi2 import * File "C:\Users\MYUSERID\AppData\Local\Continuum\anaconda3\lib\sqlite3\dbapi2.py", line 27, in from _sqlite3 import * ImportError: DLL load failed: Procedyre not found。在处理以上异常时,又发生了另一个异常:Traceback (most recent call last): File "C:\Users\MYUSERID\AppData\Local\Continuum\anaconda3\Scripts\jupyter-notebook-script.py", line 6, in from notebook.notebookapp import main File "C:\Users\MYUSERID\AppData\Local\Continuum\anaconda3\lib\site-packages\notebook\notebookapp.py", line 86, in from .services.sessions.sessionmanager import SessionManager File "C:\Users\MYUSERID\AppData\Local\Continuum\anaconda3\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 13, in from pysqlite2 import dbapi2 as sqlite3 ModuleNotFoundError: No module named 'pysqlite2'。

我尝试过的:


我已经检查了新的Anaconda文件夹,就sqlitesqlite3pysqlite2而言,一切似乎都在应该的位置。
自从上次下载Anaconda以来,他们似乎改变了默认安装文件夹,所以我编辑了我的用户和系统环境变量,根据Jupyter notebook will not open from command prompt的帖子,以防重新安装Anaconda时检查“添加到路径”选项不足以解决问题。但我仍然得到相同的错误消息。
当我从Anaconda Navigator启动Jupyter时,一切运行正常。
这里有一个类似的问题,但未在Ubuntu中得到解答:2x ModuleNotFoundError Jupyter notebook

编辑:


当我使用Anaconda Prompt时,只需输入jupyter notebook,jupyter也能正常运行。那么为什么要费心用命令窗口?Anaconda prompt命令不会在默认的Web浏览器中自动打开ipynb文件。我之前使用Windows命令窗口(和一个批处理文件)来完成这项任务,我认为这非常有用。

系统详情:

Windows 7, 64 bit
Anaconda 2018.12
Jupyter Notebook 5.7.4
Python 3.7.1
IPython 7.2.0

所有这些答案都是针对Windows和Anaconda的。如果有人有Ubuntu和venv/pip的解决方案,我希望能在评论中得到回复。 - sh37211
6个回答

34

我被同一个问题困扰了一整天,最终找到了解决方案,现在它正常工作了。

这个问题似乎是由于路径".\Anaconda\Dlls\"中缺少sqlite3.dll引起的。我解决了这个问题,只需从\Anaconda3\Library\bin复制该.dll文件并将其放置在上述路径下。这真是救命稻草。

谢谢, Darsan


太棒了!迫不及待想去查看它! - vestland
对于我的情况:C:\ProgramData\Anaconda3\DLLs - Sedat Kestepe

5

非常顺利地工作。 - Dr_Zaszuś

4

简短回答:

这似乎是一个版本问题,截至2019年1月29日,仅与以下相关:

Anaconda3-2018.12-Windows-x86_64:

Jupyter Notebook 5.7.4
Python 3.7.1 (default, Dec 10 2018, 22:54:23) 
IPython 7.2.0

请查看下面的列表,以查看在批处理中启动Jupyter或尝试安装nbExtensions时不会引发“ModuleNotFoundError:No module named pysqlite2”的版本。
对于Anaconda3-2018.12版本,可以使用GokulDAS027在此帖子中提供的设置从批处理中启动Jupyter,但它不会自动在您的默认Web浏览器中打开。您也可以从Anaconda Navigator启动Jupyter而没有问题。
解决方法1:运行更详细的批处理
结果发现,GokulDAS027针对问题“使用.bat更改目录并运行Jupyter”的建议出乎意料地打开了Jupyter,而不会引发sqlite错误消息:
C:\ Users \ ** UserName ** \ Anaconda3 \ python.exe C:\ Users \ ** UserName ** \ Anaconda3 \ cwp.py C:\ Users \ ** UserName ** \ Anaconda3 C:\ Users \ ** UserName ** \ Anaconda3 \ python.exe C:\ Users \ ** UserName ** \ Anaconda3 \ Scripts \ jupyter-notebook-script.py“**文件位置**”
在我的系统上,Jupyter不会自动打开默认Web浏览器。此外,如果您想安装Notebook扩展程序,则会收到相关错误消息。由于我认为这不是很令人满意,因此我开始深入挖掘是否对Anaconda的较新版本也存在此问题:
解决方法2:安装旧版Anaconda
我注意到github上的一些评论指出,在Python 3中不使用pysqlite2。我非常确定,在一年前已经使用Python 3时,我没有遇到过ModuleNotFoundError:No module named pysqlite2,因此我测试了一些旧版的Anaconda安装程序,以检查是否会引发相同的错误。
似乎仅会在最新版本(截至2019年1月29日)引发pysqlite2错误: Anaconda3-2018.12
Jupyter Notebook 5.7.4
Python 3.7.1 (default, Dec 10 2018, 22:54:23) 
IPython 7.2.0

通过以下系统设置(仍在Windows 7,64位)一切都运行良好,意味着:

  1. 可以从命令提示符(不仅限于Anaconda提示符)启动Jupyter,方法是导航到文件夹并键入jupyter notebook然后它会自动在默认的Web浏览器中启动。

  2. 可以使用conda install -c conda-forge jupyter_contrib_nbextensions安装nbExtensions。

测试版本来自 Anaconda Archive

Anaconda3-5.3.1

Jupyter Notebook 5.6.0
Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)]
IPython 6.5.0 -- An enhanced Interactive Python. Type '?' for help.

Anaconda3-4.4.0

Python 3.6.1 |Anaconda 4.4.0 (64-bit)|
IPython 5.3.0

Anaconda2-4.3.1-Windows-x86_64

Jupyter Notebook 4.3.1
Python 2.7.13 |Anaconda 4.3.1 (64-bit)| 
IPython 5.1.0 

1
我也遇到了这个问题。我打算卸载"Anaconda3-2018.12-Windows",然后尝试从存档中安装"Anaconda3-5.3.1-Windows-x86.exe"。如果解决了我的问题,我会在这里回报的。 - andrewm4894
做这个!我真的很想知道我是否是唯一一个遇到这个问题的人。 - vestland
1
似乎对我没有起作用 - 仍然出现相同的错误。https://gist.github.com/andrewm4894/957cdb9561e1529f942373865f6a7fc0。我已经在Docker中使其工作,所以在这个阶段我会选择使用它。 - andrewm4894
我在Ubuntu上遇到了这个错误,顺便说一下。起初想将Jupyter安装到Poetry创建的Virtualenv中,但最终放弃并尝试通过Miniconda3安装。我不太愿意降级Miniconda以使其正常工作,似乎应该记录问题以解决此问题。 - josiah

2
如果您已经安装了cx_Oracle包的Oracle客户端,请检查DYLD_LIBRARY_PATH中是否有/usr/lib。尝试从路径中删除/usr/bin,看看是否有效。
我遇到了同样的问题,这对我起作用了。我在MacOS上尝试过。

2
这篇文章是为那些可能已经从源代码编译了Python的用户以及那些没有管理员权限的用户而写的(因此我无法使用Homebrew)。我遇到了同样的错误,但我的Python环境是自定义的,并且我没有使用anaconda或pyenv。值得一提的是,我的操作系统是macOS mojave 10.14.6
我手动重新从源代码包中编译和重新配置了sqlite。步骤如下:
  1. 页面下载sqlite tarfile
  2. 导航到您安装Python版本的路径/path/to/python_dir/Python-3.x.x/Modules。(因为我不是管理员,所以我将它安装在这里:/Users/myusername/python3):/Users/myusername/python3/Python-3.6.8/Modules/
  3. /Modules/下提取sqlitetar zxf /Users/myusername/Downloads/sqlite.tar.gz
  4. cd sqlite
  5. 本地配置sqlite./configure --prefix='/Users/myusername/python3'
    值得一提的是,如果没有prefix选项,make install将在默认位置安装文件。 查看此答案。因此,如果您的Python不在默认位置,请使用prefix选项。
  6. make && make install
  7. 返回到python文件夹并重新配置python二进制文件,指向sqlite
    cd ../../然后:
    ./configure --prefix='/Users/myusername/python3' --with-sqlite='/Users/myusername/python3'.
  8. make && make install

附注:如果您手动配置了Python并且无法使用pip安装某些库,则可能需要从源代码重新配置和重新编译该软件包。下载软件包的tar文件,并为其重复上述步骤。我也遇到了zlibopenssl的问题,我也是按照上述方法解决的。
您可能会发现以下一些有用的线程:这个,也许这个也有用。


0
这是我在Windows 10上的解决方法:
用“C:\Users\username\anaconda3\Library\bin\sqlite3.dll”替换文件“C:\Windows\System32\sqlite3.dll”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接