Dans un Env virtuel avec Python 3.7.2, j'essaye d'exécuter python manage.py startap myapp
et j'obtiens cette erreur:
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).
J'utilise Ubuntu Trusty 14.04 Server.
Comment mettre à niveau ou mettre à jour ma version sqlite vers> = 3.8.3?
L'Iran
$ 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]
et
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.
EDIT: le settings.py
est standard:
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Je viens de vivre ça. J'ai dû installer une nouvelle version distincte de SQLite, à partir de
https://www.sqlite.org/download.html
C'est dans/usr/local/bin. Ensuite, j'ai dû recompiler Python, en lui disant de regarder là-bas:
Sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
Sudo LD_RUN_PATH=/usr/local/lib make altinstall
Pour vérifier quelle version de SQLite Python utilise:
$ python
Python 3.7.3 (default, Apr 12 2019, 16:23:13)
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.27.2'
J'ai appliqué le correctif suivant et cela a fonctionné pour mon serveur CentOS 7.x.
Éditer /usr/lib64/python3.6/site-packages/Django/db/backends/sqlite3/base.py
fichier selon l'exemple ci-dessous:
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)
En plus des réponses mentionnées ci-dessus, au cas où vous rencontriez ce problème sur Travis CI, ajoutez dist: xenial
directive pour le corriger.
Cette erreur survient car votre environnement virtuel n'a pas pu se connecter à la base de données sqlite3 récemment mise à jour. Pour cela, vous devez mettre à jour votre version de base de données sqlite3 manuellement, puis en donner le chemin à votre environnement virtuel. Veuillez suivre les étapes ci-dessous:
Téléchargez le dernier sqlite3 sur le site officiel. ( https://www.sqlite.org/download.html ) wget http://www.sqlite.org/sqlite-autoconf-3070603.tar.gz
Ensuite, allez dans ce dossier et lancez la commande. tar xvfz sqlite-autoconf-3070603.tar.gz
Accédez au dossier correspondant. cd sqlite-autoconf-3070603
./configure
make
make install
Cela peut prendre trop de temps mais attendez la fin. Si cela prend trop, mettez fin à ce processus et poursuivez le reste des étapes.
Vous avez maintenant installé avec succès sqlite3 mis à jour. Maintenant, lancez cette commande Sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
Ouvrez votre fichier d'activation de l'environnement virtuel (par exemple, venv/bin/activate) et ajoutez cette ligne en haut du fichier ... export LD_LIBRARY_PATH="/usr/local/lib"
Maintenant, pour vérifier, vous pouvez taper ces commandes dans votre python Shell
$ python
Python 3.7.3 (default, Apr 12 2019, 16:23:13)
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.27.2'
Si vous ne voulez pas recompiler Python et vous allez utiliser un virtualenv, vous pouvez le faire pour le configurer sans affecter le système dans son ensemble (je l'ai fait avec Ubuntu 16):
Exécutez les commandes suivantes:
./configure
Sudo make install
Vous devez maintenant modifier le script d'activation utilisé pour démarrer virtualenv afin que python recherche au bon endroit le SQLite nouvellement installé. Ajoutez simplement la ligne suivante en haut du fichier:
export LD_LIBRARY_PATH = "/ usr/local/lib"
Maintenant, lorsqu'il est actif, Django 2.2+ devrait fonctionner correctement dans virtualenv. J'espère que cela vous aidera.