使用Anaconda Python无法导入sqlite3

76

我正在尝试在Windows上使用Python 3.7.1完成以下操作。

import sqlite3

但是我收到了以下错误消息

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "c:\programdata\anaconda3\lib\sqlite3\__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "c:\programdata\anaconda3\lib\sqlite3\dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: DLL load failed: The specified module could not be found.
我已经寻找问题的解决方案有一段时间了,但都没有结果。我在Anaconda提示符上也成功运行过pip install pysqlite3,但是导入仍然失败。应该怎么办?
11个回答

180

我通过下载以下内容在Windows上使其工作:sqlite3 dll库(找到你的系统版本)

并将其放置在文件夹中:C:\Users\YOURUSER\Anaconda3\DLLs

(根据您安装Anaconda的方式,可能需要将其放置在以下文件夹中:C:\ProgramData\Anaconda3\DLLs)

根据@alireza-taghdisian的说法,您可以通过在anaconda提示符上键入conda info --envs来定位您的conda环境的确切路径(在此处需要将sqlite3 dll复制)。


19
如果你正在使用conda虚拟环境,你需要将文件复制到环境文件夹内的DLL文件夹中。请注意,不要更改原文意思。 - Jesuisme
7
对我有用。但我的文件夹路径是:C:\Users\YOURUSER\AppData\Local\Continuum\anaconda3\DLLs - Tony P
6
对我起作用了。在 VS Code 中运行 Python 3.7.1 时出现问题。我将 elgsantos 建议的 sqlite3.dll 文件放到我正在运行 python.exe 的 anaconda/envs/ 目录下。 - user3730972
2
但是我已经在那个文件夹中有一个“_sqlite.pyd”文件了。对于相同的虚拟环境中的命令行Python来说,这已经足够好了。为什么当Anaconda和命令行Python都共享~\Anaconda3\DLLs文件夹在sys.path中时,它对Anaconda来说还不够好呢? - Jake Stevens-Haas
如果您在虚拟环境中遇到问题,可以下载该文件并将其放置在“venv\Scripts\”目录中,谢谢。 - Peko Chan
显示剩余3条评论

23

找到sqlite3.dll文件。在我的情况下,它在以下文件夹中:

C:\Users\Admin\anaconda3\Library\bin 

其中 C:\Users\Admin\anaconda3 是Anaconda安装的文件夹。

将其添加到环境变量中的PATH中,然后它就可以工作了。


如何在VS Code中添加到PATH变量? - guyguyguy12345
在Pycharm中,您可以在“运行”->“编辑配置”->“环境变量”下添加PATH环境变量。这样做的好处是,您可以为不同的Python版本指定不同的路径。 - Eelco van Vliet
这对我有用。谢谢。因此,如果您尚未拥有dll,则可能是elgsantos答案的组合以及将其添加到PATH中的答案是完整的答案。 - Denis
对我来说,该文件夹是C:\ProgramData\Anaconda3\Library\bin。 - AlexM

15

尝试将 sqlite3.dll 文件从

C:\Users\YOURUSER\anaconda3\Library\bin

文件夹复制到

C:\Users\YOURUSER\Anaconda3\DLLs


我刚刚重新安装了Anaconda(使用Python3.8,64位,在Win10上),但是在...anaconda3\Library下没有bin文件夹。相反,sqlite3.dll在...anaconda3\pkgs\sqlite-3.35.4-h2bbff1b_0\Library\bin中。这是否应该被认为是奇怪的?当然,我可以创建文件夹...anaconda3\Library\bin并将sqlite3.dll作为单个.dll文件复制到其中。这样做是否正常且可行? - delaflota

11

1
没有帮助到我,或者说:那个已经在我的路径中了,但它仍然无法正常工作。 :-( - mmo

9
将CONDA_DLL_SEARCH_MODIFICATION_ENABLE=1添加到您的环境变量中。

5
在执行程序之前,请在您的shell中输入conda activate

1

我成功解决了这个问题,方法是将sqlite3.dll文件放在C:\Users<USERID>\AppData\Local\conda\conda\envs<ENV NAME>\DLLs目录下。

可以从https://www.sqlite.org/download.html下载sqlite3.dll文件,或者从C:\ProgramData\Anaconda3\DLLs\复制该文件。


对我而言,问题是在更新 Windows 11 后,间谍软件崩溃后开始的。这个解决方案对我有效。 - VGB

1
我已经尝试了上述所有解决方案,但对于我的系统而言,我发现我下载的Python在C:\ Python27中,因此Python C:\ Python27 \ DLLs中有一个dll文件夹。我将Sqlite3.dll安装在上面的dll文件夹中。
也许这个解决方案会对你有所帮助,因为它完全取决于您安装Python的位置。
愉快编程 :)

当你获得50个声誉时,请记得使用评论来分享这些提示。 - maciejwww
你的回答存在一些格式问题。请尝试改进。使用 \`` 括号来表示路径和代码片段。为了突出应用程序名称或界面,请使用 **粗体**(** 括号)或 *斜体*(*括号)字体。要从新行开始,请在行末使用 *双空格* - 这比到处使用 *Enter* 更清晰明了。添加一些:` 也是不错的选择。 - maciejwww

0

在非“base”环境的conda提示符中加载Jupyter笔记本时遇到了相同的错误。 [1]: https://istack.dev59.com/2DW7E.webp 通过安装sqlite包解决 (nlpenv) C:\Users\arunk>conda install sqlite

启动 *

(nlpenv) C:\Users\arunk>jupyter notebook


0

我发现@elgsantos很有用。但对于像我一样新手的Python和Conda来说,我想添加一些细节。

1- 我使用miniconda3来创建新环境。

2- 有趣的是,在我的计算机上为conda提供了两个安装路径:第一个(显而易见的)位于“C:\Users\taghdisian\miniconda3”上。第二个位于“C:\Users\taghdisian\AppData\Local\r-miniconda”上。后者是您需要复制sqlite3文件到envs文件夹的主要路径。我将它们复制到“C:\Users\taghdisian\AppData\Local\r-miniconda\envs\sdr3.9\DLLs”中,其中sdr3.9是我的虚拟Condo环境之一。

您可以通过在anaconda提示符上输入conda info --envs来找到conda环境的确切路径(您需要复制sqlite3的路径)。

希望这可以帮助你。


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