没有名为 _sqlite3 的模块
- 2025-01-20 09:07:00
- admin 原创
- 129
问题描述:
我正在尝试在运行Debian 5 的VPS上运行Django应用程序。当我运行演示应用程序时,它返回此错误:
File "/usr/local/lib/python2.5/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/usr/local/lib/python2.5/site-packages/django/db/backends/sqlite3/base.py", line 30, in <module>
raise ImproperlyConfigured, "Error loading %s: %s" % (module, exc)
ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3
查看 Python 安装,它给出了同样的错误:
Python 2.5.2 (r252:60911, May 12 2009, 07:46:31)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.5/sqlite3/__init__.py", line 24, in <module>
from dbapi2 import *
File "/usr/local/lib/python2.5/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ImportError: No module named _sqlite3
>>>
在网上阅读后,我了解到 Python 2.5 应该附带所有必要的SQLite包装器。我需要重新安装 Python 吗,或者还有其他方法可以启动并运行此模块?
解决方案 1:
您的 makefile 似乎未包含适当的.so
文件。您可以按照以下步骤更正此问题:
安装
sqlite-devel
(或libsqlite3-dev
在某些基于 Debian 的系统上)使用以下命令重新配置并重新编译 Python
./configure --enable-loadable-sqlite-extensions && make && sudo make install
笔记
该sudo make install
部分将把该 Python 版本设置为系统范围的标准,这可能会带来无法预料的后果。如果您在工作站上运行此命令,您可能希望将其与现有 Python 一起安装,这可以使用 来完成sudo make altinstall
。
解决方案 2:
我在 Ubuntu 上使用pyenv时遇到了与 Python 3.5 相同的问题。
如果你使用pyenv安装 python ,它被列为常见构建问题之一。要解决此问题,请删除已安装的 python 版本,安装要求(针对此特定情况libsqlite3-dev
),然后使用以下命令重新安装 python 版本
pyenv install <python-version>
然后如果需要的话重新创建虚拟环境。
解决方案 3:
我遇到了同样的问题(python2.5
在 Ubuntu Lucid 上从源代码构建),并import sqlite3
引发了同样的异常。我libsqlite3-dev
从包管理器安装了它,重新编译了 python2.5,然后导入成功了。
解决方案 4:
我的python是从源代码构建的,原因是执行配置python版本时缺少选项:3.7.4
./configure --enable-loadable-sqlite-extensions --enable-optimizations
make
make install
固定的
解决方案 5:
安装
sqlite-devel
包:
yum install sqlite-devel -y
从源代码重新编译python:
./configure
make
make altinstall
解决方案 6:
这就是我为了让它工作而做的事情。
我正在使用安装了 python 2.7.5 的 pythonbrew(使用 pip)。
我首先按照 Zubair (上述)所说的操作,并运行以下命令:
sudo apt-get install libsqlite3-dev
然后我运行了这个命令:
pip install pysqlite
这解决了数据库问题,当我运行时我得到了确认:
python manager.py syncdb
解决方案 7:
适用于 Redhat 7 或 Centos 7 的 Python 3.7.8。
安装 sqlite-devel
$ yum install sqlite-devel
编译并安装带有sqllite 扩展的Python3
$ ./configure --enable-optimizations --enable-loadable-sqlite-extensions
$ make install
解决方案 8:
我发现很多人都遇到了这个问题,因为多版本的Python,在我自己的vps(cent os 7 x64)上,我是这样解决的:
找到文件“_sqlite3.so”
find / -name _sqlite3.so
出去: /usr/lib64/python2.7/lib-dynload/_sqlite3.so
找到要使用的python标准库的目录,
为我/usr/local/lib/python3.6/lib-dynload
复制文件:
cp /usr/lib64/python2.7/lib-dynload/_sqlite3.so /usr/local/lib/python3.6/lib-dynload
最后,一切都会好起来的。
解决方案 9:
我的 _sqlite3.so 位于 /usr/lib/python2.5/lib-dynload/_sqlite3.so。从您的路径判断,您应该有文件 /usr/local/lib/python2.5/lib-dynload/_sqlite3.so。
请尝试以下操作:
find /usr/local -name _sqlite3.so
如果找不到该文件,则可能是 Python 安装出了问题。如果是,请确保其安装路径位于 Python 路径中。在 Python shell 中,
import sys
print sys.path
就我而言,/usr/lib/python2.5/lib-dynload 在列表中,因此它能够找到 /usr/lib/python2.5/lib-dynload/_sqlite3.so。
解决方案 10:
我最近尝试在 Ubuntu 11.04 桌面上安装 Python 2.6.7 以进行一些开发工作。遇到了与此主题类似的问题。我设法通过以下方式修复它:
调整 setup.py 文件以包含正确的 sqlite dev 路径。setup.py 中的代码片段:
def sqlite_incdir:
sqlite_dirs_to_check = [
os.path.join(sqlite_incdir, '..', 'lib64'),
os.path.join(sqlite_incdir, '..', 'lib'),
os.path.join(sqlite_incdir, '..', '..', 'lib64'),
os.path.join(sqlite_incdir, '..', '..', 'lib'),
'/usr/lib/x86_64-linux-gnu/'
]
我添加的部分是“/usr/lib/x86_64-linux-gnu/”。
运行 make 之后,我没有收到任何警告说未构建 sqlite 支持(即,它构建正确:P),但是运行之后
make install
,sqlite3 仍然没有导入相同的“ImportError: No module named _sqlite3" whe running "import sqlite3
”。
因此,该库已被编译,但未移动到正确的安装路径,因此我复制了该.so
文件(cp /usr/src/python/Python-2.6.7/build/lib.linux-x86_64-2.6/_sqlite3.so /usr/local/python-2.6.7/lib/python2.6/sqlite3/
- 这些是我的构建路径,您可能需要根据您的设置进行调整)。
瞧!SQLite3 支持现已可用。
解决方案 11:
这在 Redhat Centos 6.5 中对我有用:
yum install sqlite-devel
pip install pysqlite
解决方案 12:
使用asdf安装 Python 3.8.11 后我遇到了同样的问题
解决此问题的方法:
我必须安装libsqlite3-dev
sudo apt-get install libsqlite3-dev
然后通过以下方式卸载 Pythonasdf
asdf uninstall python 3.8.11
然后通过以下方式再次安装 Pythonasdf
asdf install python 3.8.11
解决方案 13:
sqlite3
随 Python 一起提供。我也遇到了同样的问题,我只是卸载python3.6
并重新安装它。
卸载现有的python:
sudo apt-get remove --purge python3.6
安装python3.6:
sudo apt install build-essential checkinstall
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
tar xvf Python-3.6.0.tar.xz
cd Python-3.6.0/
./configure
sudo make altinstall
解决方案 14:
我遇到了同样的问题,上面的答案对我没有任何作用,但现在我通过
只需删除 python.pip 和 sqlite3 并重新安装
sudo apt-get 删除 python.pip
sudo apt-get 删除 sqlite3
现在再次安装
sudo apt-get 安装 python.pip
sudo apt-get 安装 sqlite3
在我的情况下,再次安装 sqlite3 时显示一些错误,然后我输入
sqlite3
在终端上检查它是否已被删除,然后它开始解压它
安装 sqlite3 后,启动终端并写入
sqlite3
database.db(创建数据库)我相信这肯定会对你有帮助
解决方案 15:
python-pysqlite2包是否安装了?
sudo apt-get install python-pysqlite2
解决方案 16:
检查您的 settings.py 文件。您不是只将数据库引擎的“sqlite”写成了“sqlite3”吗?
解决方案 17:
以下内容适用于具有虚拟环境的 Python 3.9:
安装 sqlite3 库。
sudo apt-get install libsqlite3-dev
激活 Python 虚拟环境。
source env/bin/activate
将sqlite3文件复制到Python虚拟环境中,并重命名以支持Python 3.9。
cp /usr/lib/python3.8/lib-dynload/_sqlite3.cpython-38-x86_64-linux-gnu.so ./env/lib/python3.9/site-packages
mv ./env/lib/python3.9/site-packages/_sqlite3.cpython-38-x86_64-linux-gnu.so ./env/lib/python3.9/site-packages/_sqlite3.cpython-39-x86_64-linux-gnu.so
注意,我们将文件名中的 38 重命名为 39 以支持 Python 3.9。
解决方案 18:
为进入此页面寻找 Windows 操作系统解决方案的任何人提供答案:
如果尚未安装,则必须安装 pysqlite3 或 db-sqlite3。您可以使用以下命令进行安装。
pip 安装 pysqlite3
pip 安装 db-sqlite3
对我来说,问题出在 sqlite3 的 DLL 文件上。
解决方案:
我从sqlite 站点获取了 DLL 文件。这可能会根据您安装的 python 版本而有所不同。
我将其粘贴到环境的 DLL 目录中。对我来说它是“C:\Anaconda\Lib\DLLs”,但请检查你的。
解决方案 19:
我很失望这个问题至今仍然存在。我最近一直试图在 CentOS 8.1 上安装 vCD CLI,当我尝试运行它时,出现了同样的错误。我解决问题的方法如下:
使用适当的前缀从头安装 SQLite3
清理我的 Python 安装
运行 Make install 重新安装 Python
由于我一直在这样做,所以要创建一篇关于如何安装 vCD CLI 和 VMware Container Service Extension 的不同博客文章。我最终记录了修复该问题所使用的步骤,并将其放在了另一篇博客文章中:
我希望这会有所帮助,因为虽然上述技巧帮助我找到了解决方案,但我必须结合其中的一些并对其进行一些修改。
解决方案 20:
我在 FreeBSD 8.1 中遇到了问题:
- No module named _sqlite3 -
通过支持端口来解决----------
/usr/ports/databases/py-sqlite3
此后可以看到:
OK ----------
'>>>' import sqlite3 -----
'>>>' sqlite3.apilevel -----
'2.0'
解决方案 21:
你必须在 centos 或 redhat 中自己编译 python,这是 python 的错误,在你的 python 源代码目录中执行此操作,然后执行以下操作
curl -sk https://gist.github.com/msabramo/2727063/raw/59ea097a1f4c6f114c32f7743308a061698b17fd/gistfile1.diff | patch -p1
解决方案 22:
如果您使用的是 FreeBSD,请尝试像这样安装 sqlite。
pkg install py27-sqlite3-2.7.10_6
解决方案 23:
我在 Ubuntu 上使用 Python3.9 和 venv。我遇到了同样的问题。首先我安装了 pysqlite
pip install pysqlite3
但它被安装在/home/<user>/.local/lib/python3.9/site-packages/pysqlite3
然后我将其移至本地目录
mv /home/<user>/.local/lib/python3.9/site-packages/pysqlite3 /usr/local/lib/python3.9/sqlite3
注意名称从更改pysqlite3
为sqlite3
解决方案 24:
我在Ubuntu中的 python 虚拟环境中设置时遇到了多个 python 依赖包的问题。这是因为我们的python有sqlite绑定。
我收到的错误:
from pysqlite2 import dbapi2 as sqlite3
ModuleNotFoundError: No module named 'pysqlite2'
我通过 --enable-loadable-sqlite-extensions=yes 解决了这个问题 1.) 首先找到你用于创建虚拟环境的 python 或 python 版本。我使用了 python3.8 例如
$ whereis python
python: /usr/bin/python3.6m /usr/bin/python /usr/bin/python3.8 /usr/bin/python2.7-config /usr/bin/python3.8-config python
$ cd /usr/bin
$ls
python3.8
python3.8-config
注意:将会有很多针对 pytho 的包检查。您将找到每个 python 版本的配置文件,现在使用特定的 python 版本
ox:/usr/bin$ ./python3.8-config --enable-loadable-sqlite-extensions=yes
或者
ox:/usr/bin$ ./python3.8-config --enable-optimizations --enable-loadable-sqlite-extensions
现在,使用该 Python 版本创建虚拟环境,例如转到要创建虚拟环境的文件夹
$ python3.8 -m venv mlwen_jup_env
$ source mlwen_jup_env/bin/activate
已完成,现在您可以安装软件包
解决方案 25:
我在 NetBSD 服务器上遇到了同样的问题。.so
需要使用 安装缺少的文件pkgin
。为了确定要安装哪个包,我运行了
pkgin search sqlite
有很多结果,包括
...
py38-aiosqlite-0.17.0nb1 Async bridge to the standard sqlite3 module
py38-apsw-3.37.0nb2 Python wrapper for SQLite
py38-peewee-3.15.0 Small, expressive ORM for PostgreSQL, MySQL and SQLite
py38-sqlite3-3.8.13nb22 Built-in sqlite support for Python 2.5 and up
py39-aiosqlite-0.17.0nb1 Async bridge to the standard sqlite3 module
py39-apsw-3.37.0nb2 Python wrapper for SQLite
py39-peewee-3.15.0 Small, expressive ORM for PostgreSQL, MySQL and SQLite
py39-sqlite3-3.9.13nb22 Built-in sqlite support for Python 2.5 and up
...
(以及其他 Python 版本)。我使用的是 Python 3.9,所以py39-sqlite3-3.9.13nb22
对我来说是正确的选择。运行
sudo pkgin install py39-sqlite3-3.9.13nb22
为我解决了这个问题。
解决方案 26:
我决定重新安装 Python pyenv install <version>
,然后pyenv rehash
。不破坏任何先前创建的虚拟环境
解决方案 27:
下载 sqlite3:
wget http://www.sqlite.org/2016/sqlite-autoconf-3150000.tar.gz
请按照以下步骤进行安装:
$tar xvfz sqlite-autoconf-3071502.tar.gz
$cd sqlite-autoconf-3071502
$./configure --prefix=/usr/local
$make install
解决方案 28:
如果您使用,python3.10.0
您可以将其更改为python3.10.13
,一切都会好起来。
解决方案 29:
你需要在你的python环境中安装pysqlite :
$ pip install pysqlite
解决方案 30:
尝试复制_sqlite3.so
以便 Python 可以找到它。
它应该很简单:
cp /usr/lib64/python2.6/lib-dynload/_sqlite3.so /usr/local/lib/python2.7/
相信我,尝试一下。
扫码咨询,免费领取项目管理大礼包!