django迁移错误,python3中的sqlite版本

时间:2019-05-13 15:58:54

标签: python django python-3.x sqlite centos7

我正在linux centos7服务器中尝试python django教程。 我安装了python3,pip,django,virtualenv,sqlite

# virtualenv -p python3 venv
# source venv/bin/activate
(venv) # pip3 install django 
Successfully installed django-2.2.1 pytz-2019.1 sqlparse-0.3.0
(venv) # django-admin startproject firstdjango
# cd firstdjango

# python3 manage.py runserver
... LookupError: No installed app with label 'admin'.

# python3 manage.py migrate
... django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

问题1。 sqlite3版本 我已经安装了最新的sqlite3。版本是3.27.2

# sqlite3 --version
3.27.2

# sqlite3.7 --version (backup initial sqlite3)
3.7.17

但是在python3中,sqlite3版本仍然是3.7.17

# python3 -c "import sqlite3; print(sqlite3.sqlite_version);"
3.7.17

我该如何解决这个问题?

如果您需要有关我的centos7配置的其他信息,请回复。谢谢。

OS Centos7

# python3 --version
Python 3.7.3

# pip3 --version
pip 19.1.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

# pip3 list virtualenv
Package    Version
---------- -------
Django     2.2
pip        19.1.1
pysqlite3  0.2.1
pytz       2018.9
setuptools 40.8.0
sqlparse   0.3.0
virtualenv 16.4.3

# python3 -c "import django; print(django.VERSION);"
(2, 2, 0, 'final', 0)

# sqlite3 --version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7

# sqlite3.7 --version (backup initial sqlite3)
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668

# python3 -c "import sqlite3; print(sqlite3.sqlite_version);"
3.7.17

# python3 -c "import django; print(django.VERSION);"
(2, 2, 0, 'final', 0)

3 个答案:

答案 0 :(得分:0)

尝试以下操作。

  1. 此sqlite3所在的查找。 which sqlite3,这将为您提供此文件的路径。
  2. 然后重命名sqlite3 ~> sqlite3_backup
  3. 对sqlite3.7执行相同的操作。 which sqlite3.7转到路径并重命名sqlite3.7 ~> sqlite3
  4. 然后运行migration命令,查看问题是否仍然存在。

答案 1 :(得分:0)

我遇到了一个类似的问题,其中我安装的python未使用SQLLite库进行编译。这只是在CentOS上发生在我身上,在Ubuntu上从来都不是问题。解决方案是从源代码构建python并将其与系统python并排安装。

答案 2 :(得分:0)

  1. 安装pysqlite3的二进制版本(该版本随附了预编译的sqlite lib的较新版本,更多信息:https://github.com/coleifer/pysqlite3)。
pip install pysqlite3-binary
  1. 在python代码中,使用pysqlite3代替sqlite3,例如:
import pysqlite3
    (...) conn = pysqlite3.connect(r"filename")