Chu*_*eez 6 python sqlite django
在带有Python 3.7.2的虚拟Env中,我尝试运行django,python manage.py startap myapp并且出现此错误:
raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.8.2).
Run Code Online (Sandbox Code Playgroud)
我正在运行Ubuntu Trusty 14.04 Server。
如何将sqlite版本升级或更新为> = 3.8.3?
我跑了
$ apt list --installed | grep sqlite
libaprutil1-dbd-sqlite3/trusty,now 1.5.3-1 amd64 [installed,automatic]
libdbd-sqlite3/trusty,now 0.9.0-2ubuntu2 amd64 [installed]
libsqlite3-0/trusty-updates,trusty-security,now 3.8.2-1ubuntu2.2 amd64 [installed]
libsqlite3-dev/trusty-updates,trusty-security,now 3.8.2-1ubuntu2.2 amd64 [installed]
python-pysqlite2/trusty,now 2.6.3-3 amd64 [installed]
python-pysqlite2-dbg/trusty,now 2.6.3-3 amd64 [installed]
sqlite3/trusty-updates,trusty-security,now 3.8.2-1ubuntu2.2 amd64 [installed]
Run Code Online (Sandbox Code Playgroud)
和
sudo apt install --only-upgrade libsqlite3-0
Reading package lists... Done
Building dependency tree
Reading state information... Done
libsqlite3-0 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 14 not upgraded.
Run Code Online (Sandbox Code Playgroud)
编辑:这settings.py是库存标准:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Run Code Online (Sandbox Code Playgroud)
PyU*_*ned 16
如果你不想重新编译 Python 并且你打算使用 virtualenv,你可以这样做来设置它而不影响整个系统(我已经用 Ubuntu 16 完成了这个):
运行以下命令:
。/配置
须藤制作安装
现在您需要编辑用于启动 virtualenv 的 activate 脚本,以便 python 为新安装的 SQLite 寻找正确的位置。只需在文件顶部添加以下行:
导出 LD_LIBRARY_PATH="/usr/local/lib"
现在,当处于活动状态时,Django 2.2+ 应该可以在 virtualenv 中正常工作。希望有帮助。
Par*_*iya 10
出现此错误是因为您的虚拟环境无法连接到新更新的 sqlite3 数据库。为此,您必须手动更新 sqlite3 数据库版本,然后将其路径提供给您的虚拟环境。请按照以下步骤操作:
从官方网站下载最新的 sqlite3。( https://www.sqlite.org/download.html )wget http://www.sqlite.org/sqlite-autoconf-3070603.tar.gz
然后转到该文件夹并触发命令。
tar xvfz sqlite-autoconf-3070603.tar.gz
转到相应的文件夹。 cd sqlite-autoconf-3070603
./configure
make
make install可能需要太多时间,但要等到结束。如果花费太多,则终止该过程并继续其余步骤。
现在您成功安装了更新的 sqlite3。现在启动这个命令sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
打开虚拟环境的激活文件(例如,venv/bin/activate)并在文件顶部添加这一行...
export LD_LIBRARY_PATH="/usr/local/lib"
现在为了检查你可以在你的 python shell 中输入这个命令
$ python
Python 3.7.3 (default, Apr 12 2019, 16:23:13)
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.27.2'
Run Code Online (Sandbox Code Playgroud)
我刚刚经历过。我必须安装一个单独的更新版本的SQLite,从
https://www.sqlite.org/download.html
在/ usr / local / bin中。然后,我不得不重新编译Python,告诉它在那看:
sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
sudo LD_RUN_PATH=/usr/local/lib make altinstall
Run Code Online (Sandbox Code Playgroud)
要检查使用哪个版本的SQLite Python:
$ python
Python 3.7.3 (default, Apr 12 2019, 16:23:13)
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.27.2'
Run Code Online (Sandbox Code Playgroud)
小智 5
我已应用以下修复程序,它适用于我的 CentOS 7.x 服务器。
/usr/lib64/python3.6/site-packages/django/db/backends/sqlite3/base.py按照以下示例编辑文件:
def check_sqlite_version():
# if Database.sqlite_version_info < (3, 8, 3):
# 2018-07-07, edit
if Database.sqlite_version_info < (3, 6, 3):
raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6593 次 |
| 最近记录: |