从cmd运行Jupyter Notebook会引发ModuleNotFoundError:没有名为pysqlite2的模块

时间:2019-01-24 12:42:56

标签: python sqlite jupyter-notebook jupyter

问题:

重新安装Anaconda后,我将无法再使用命令窗口导航到某个文件夹,在该窗口中我拥有一些.pynb文件,键入jupyter notebook并开始运行。我收到这些错误:

  

C:\ scripts \ notebooks> jupyter笔记本Traceback(最近通话)   最后):文件   “ C:\ Users \ MYUSERID \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ notebook \ services \ sessions \ sessionmanager.py”,   第10行,在       导入sqlite3文件“ C:\ Users \ MYUSERID \ AppData \ Local \ Continuum \ anaconda3 \ lib \ sqlite3__init __。py”,   第23行,在       从sqlite3.dbapi2导入*文件“ C:\ Users \ MYUSERID \ AppData \ Local \ Continuum \ anaconda3 \ lib \ sqlite3 \ dbapi2.py”,   第27行,在       从_sqlite3导入* ImportError:DLL加载失败:未找到Procedyre

     

在处理上述异常期间,发生了另一个异常:

     

回溯(最近通话最近):文件   “ C:\ Users \ MYUSERID \ AppData \ Local \ Continuum \ anaconda3 \ Scripts \ jupyter-notebook-script.py”,   第6行       从notebook.notebookapp导入主文件“ C:\ Users \ MYUSERID \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ notebook \ notebookapp.py”,   第86行,在       从.services.sessions.sessionmanager导入SessionManager文件   “ C:\ Users \ MYUSERID \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ notebook \ services \ sessions \ sessionmanager.py”,   第13行       从pysqlite2导入dbapi2作为sqlite3 ModuleNotFoundError:没有名为“ pysqlite2”的模块


我尝试过的事情:


我检查了新的Anaconda文件夹,似乎一切都在sqlitesqlite3pysqlite2的位置。

自从我上次下载Anaconda以来,似乎它们已经更改了默认的安装文件夹,因此我确信根据帖子Jupyter notebook will not open from command prompt编辑我的用户和系统环境变量后,一切都将正常进行,以防万一重新安装Anaconda时使用Add to Path选项还不够。但是我仍然收到相同的错误消息。

当我从Anaconda Navigator启动Jupyter时,一切运行正常。

对于Ubuntu,这里有一个类似的问题,但没有得到回答:2x ModuleNotFoundError Jupyter notebook


编辑:


当我使用Anaconda Prompt时,输入jupyter notebook时jupyter也可以正常运行。那么,为什么要打扰命令窗口呢? anaconda提示命令不会在默认的Web浏览器中自动打开ipynb文件。我之前使用Windows命令窗口(和批处理文件)进行的设置可以做到这一点,我认为它非常有用。


系统详细信息:

Windows 7,64位

Anaconda 2018.12

Jupyter Notebook 5.7.4

Python 3.7.1

IPython 7.2.0

5 个答案:

答案 0 :(得分:7)

我在同一问题上停留了一天。终于找到了解决方案,现在可以正常工作了。

问题似乎是由于路径“。\ Anaconda \ Dlls \”中缺少 sqlite3.dll 引起的。我只需从 \ Anaconda3 \ Library \ bin 复制该.dll文件并将其放在上述路径下即可解决该问题。这是生命的救星。

谢谢, 达山

答案 1 :(得分:4)

简短答案:

29.01.2019起,这似乎是一个版本问题,仅与以下方面有关:

Anaconda3-2018.12

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 in this post中的设置从批处理中启动Jupyter ,但不会在默认的Web浏览器中自动打开。您也可以从Anaconda Navigator启动Jupyter,而不会出现问题。

详细信息:


解决方案1 ​​:运行更详细的批处理


事实证明,出于某种原因,从GokulDAS027到问题Using a .bat to change directories and run 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 "**file location**"

在我的系统上,Jupyter不会自动打开默认的Web浏览器。 另外,如果您想安装Notebook Extensions,则会收到相关的错误消息。由于我觉得这不是很令人满意,所以我开始进一步研究这是否也是更高版本的Anaconda的问题:


解决方案2:安装旧版本的Anaconda


我注意到github上有一些pysqlite2 is not used in Python 3的评论。我可以肯定的是,大约在一年前,当我已经在使用Python 3时,我还没有ModuleNotFoundError: No module named pysqlite2,所以我测试了一些较旧的Anaconda安装程序,以检查是否会出现相同的错误。

对于最新版本(每29.01.2019),似乎会仅出现 的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. Jupyter可以从命令提示符(不仅是Anaconda提示符)启动,方法是导航到文件夹并键入jupyter notebook 会在默认的Web浏览器中自动启动。

  2. 可以使用conda install -c conda-forge jupyter_contrib_nbextensions

    安装
  3. 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 

答案 2 :(得分:2)

如果已为cx_Oracle软件包安装了oracle客户端,请检查 DYLD_LIBRARY_PATH 中是否具有 / usr / lib 。尝试从路径中删除/ usr / bin,看看它是否有效。

我遇到了同样的问题,这对我有用。我已经在MacOS上尝试过了。

答案 3 :(得分:2)

  1. 从此链接下载pysqlite:https://www.sqlite.org/download.html
  2. 将文件压缩到dir:(anaconda3 \ DLLs)

答案 4 :(得分:1)

此答案适用于可能已从源代码编译Python的用户,也适用于没有管理员权限的用户(因此,我无法使用Homebrew)。我遇到了同样的错误,但是我的python环境是自定义的,并且我没有使用anaconda或pyenv。附带说明,我的操作系统是macOS mojave 10.14.6

我从源软件包中手动重新编译并重新配置了sqlite。步骤:

  1. 从此tarfile下载sqlite page
  2. 导航至安装了/path/to/python_dir/Python-3.x.x/Modules版本的Python。 (因为我不是管理员,所以我在这里安装了它:/Users/myusername/python3。):/Users/myusername/python3/Python-3.6.8/Modules/
  3. sqlite下提取/Modules/tar zxf /Users/myusername/Downloads/sqlite.tar.gz
  4. cd sqlite
  5. 在本地配置sqlite./configure --prefix='/Users/myusername/python3'
    旁注:如果没有prefix选项make install,则会在默认位置安装文件。 check this answer。因此,如果您的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的问题,我的操作与上述相同。
您可能会发现有用的其他一些线程:this,也许是this also