Django - 没有名为 _sqlite3 的模块
Posted
技术标签:
【中文标题】Django - 没有名为 _sqlite3 的模块【英文标题】:Django - No module named _sqlite3 【发布时间】:2012-06-02 18:58:01 【问题描述】:我的 rhel 5 上安装了 django 1.4。默认情况下,rhel 5 中包含 python 2.4,但要使用 django 1.4,我手动安装了 python 2.7.3 开发服务器运行良好,但是当我创建一个新项目并将 settings.py 文件更改为:
'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/home/oracle/Desktop/test1/my.db'
现在当我给出 python2.7 manage.py syncdb 命令时,我得到的错误是:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py",
line 443, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py",
line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py",
line 261, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py",
line 69, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py",
line 35, in import_module
__import__(name)
File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py",
line 8, in <module>
from django.core.management.sql import custom_sql_for_model,
emit_post_sync_signal
File "/usr/local/lib/python2.7/site-packages/django/core/management/sql.py",
line 6, in <module>
from django.db import models
File "/usr/local/lib/python2.7/site-packages/django/db/__init__.py",
line 40, in <module>
backend = load_backend(connection.settings_dict['ENGINE'])
File "/usr/local/lib/python2.7/site-packages/django/db/__init__.py",
line 34, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/usr/local/lib/python2.7/site-packages/django/db/utils.py",
line 92, in __getitem__
backend = load_backend(db['ENGINE'])
File "/usr/local/lib/python2.7/site-packages/django/db/utils.py",
line 24, in load_backend
return import_module('.base', backend_name)
File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py",
line 35, in import_module
__import__(name)
File "/usr/local/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py",
line 31, in <module>
raise ImproperlyConfigured("Error loading either pysqlite2 or
sqlite3 modules (tried in that order): %s" % exc)
django.core.exceptions.ImproperlyConfigured: Error loading either
pysqlite2 or sqlite3 modules (tried in that order): No module named
_sqlite3
请建议出路?
【问题讨论】:
请***.com/questions/8114946/… 和***.com/questions/1210664/no-module-named-sqlite3 帮忙? 我在使用 Python 3.4 时遇到此错误,当我选择 python 3.5 时我没有遇到此问题 【参考方案1】:你也可能在没有安装 sqlite 开发库的情况下手动编译了 python
那就去吧
sudo apt-get install libsqlite3-dev libsqlite3
然后,重新安装python
输入测试
python
>>> import sqlite3
【讨论】:
请注意,pyenv installapt-get install libsqlite3-0-dbg
安装调试库。
在全新的 centos7 安装中,常见 django 命令缺少 sqlite3。我们有 python2.7 altinstall 有最新的 python on-bpard。通过 yum 安装 sqlite3 并从源代码重新编译 python 拯救了我们!【参考方案2】:
在django.db.backends.sqlite3,它会尝试
try:
try:
from pysqlite2 import dbapi2 as Database
except ImportError:
from sqlite3 import dbapi2 as Database
except ImportError as exc:
from django.core.exceptions import ImproperlyConfigured
raise ImproperlyConfigured("Error loading either pysqlite2 or sqlite3 modules (tried in that order): %s" % exc)
因此未安装名为 sqlite3 或 pysqlite2 的模块之一。 尝试安装它们
$ pip install sqlite3 # or pysqlite2
更新
sqlite3
和 pysqlite2
是 Python 的一部分,因此这两个包不再在 PyPi 中。
【讨论】:
这现在是 Python 的一部分(如果使用此选项编译),因此 pip 存储库中不再有任何 sqlite3 包:pypi.python.org/pypi/sqlite3 和 pypi.python.org/pypi/pysqlite2 @Dereckson 我已经更新了关于您的评论的答案。谢谢 @AlirezaSavand 我正在使用 django 1.10.3 和 python 3.5.2,但仍然面临这个错误。有什么解决办法吗? @AlirezaSavand 相同【参考方案3】:我在尝试运行 Django 开发服务器时收到了非常相似的错误消息:
ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): dlopen(/Users/Rubinous/Projects/Jiiri2/jiiri_venv/lib/python2.7/lib-dynload/_sqlite3.so, 2): Library not loaded: /usr/local/opt/sqlite/lib/libsqlite3.0.8.6.dylib
Referenced from: /Users/Rubinous/Projects/Jiiri2/jiiri_venv/lib/python2.7/lib-dynload/_sqlite3.so
Reason: image not found
我通过使用pip install pysqlite
安装pysqlite
Python 模块解决了这个问题。
【讨论】:
如果python 2.6及更早版本需要将pysqlite安装为单独的lib。【参考方案4】:在 MacOSX 10.9 (Mavericks) 上,我必须运行以下命令:
CPPFLAGS=-I/usr/local/opt/sqlite/include; LDFLAGS=-L/usr/local/opt/sqlite/lib; pip install pysqlite
我使用自制软件安装 sqlite3。
brew update; brew install sqlite
【讨论】:
谢谢帮我修好了【参考方案5】:这就是我为了让它工作而做的。
我正在使用安装了 python 2.7.5 的 pythonbrew(它正在使用 pip)。
我首先按照 Zubair(上图)所说的运行了这个命令:
sudo apt-get install libsqlite3-dev
然后我运行了这个命令:
pip install pysqlite
这解决了数据库问题,我在运行时得到了确认:
python manager.py syncdb
【讨论】:
【参考方案6】:sqlite3 是 Python 2.5 及以后版本的一部分。安装这个库:
sudo apt-get install libsqlite3-dev
或者你也可以尝试安装 Python-dev 包。
【讨论】:
【参考方案7】:我在 Red Hat 上从源代码构建的 python 2.6.8 遇到了同样的问题(但这可能适用于其他操作系统上的其他版本)。
我的问题通过安装 sqlite-devel (Red Hat) before 配置和构建 python 解决了(或者在你的构建目录中执行config.status --recheck
,然后是make
和make install
。
【讨论】:
【参考方案8】:FreeBSD10:适用于 python3.5
pkg install py35-sqlite3
【讨论】:
【参考方案9】:MordicusEtCubitus 的回答是正确的。作为一个新手,还不能投票给你。
只是为了补充您的答案,在 fedora(23) 上运行以下命令进行安装。
sudo dnf install libsqlite3x-devel libsqlite3x
【讨论】:
以上是关于Django - 没有名为 _sqlite3 的模块的主要内容,如果未能解决你的问题,请参考以下文章
Django:表 minor_faculty 没有名为 user_id 的列
不忽略 db.sqlite3 文件,即使我在 django 项目的 .gitignore 中指定