J'ai cloné un projet Django vers un Centos 7 vps et j'essaie de l'exécuter maintenant, mais j'obtiens cette erreur lorsque j'essaie de migrate
:
$ python manage.py migrate
Django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
Quand j'ai vérifié la version de sqlite, c'était 3.7.17, j'ai donc téléchargé la dernière version du site sqlite et l'ai remplacée par l'ancienne, et maintenant quand je la version, elle donne:
$ sqlite3 --version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7
Toujours lorsque j'essaie de migrer le projet, j'obtiens exactement le même message qu'auparavant, ce qui signifie que la nouvelle version n'est pas trouvée. Je suis nouveau sur Linux et apprécierais toute aide.
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'
Pour moi, la nouvelle version de sqlite3 est dans/usr/local/bin, j'ai donc dû recompiler Python, en lui disant d'y regarder:
Sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
Sudo LD_RUN_PATH=/usr/local/lib make altinstall
J'espère que ça aide.
J'ai eu la même erreur dans les versions CentOS 7.6 et Python 3.7. . Je pense que vous utilisez Django 2.2. * une version. Dans la dernière version de Django 2.2 , ils ont changé la version SQLIte , à l'origine de votre problème.
Il s'agit des notes de version de Django 2.2 à propos de SQLite .
La version minimale prise en charge de SQLite est passée de 3.7.15 à 3.8.3.
Vous pouvez donc installer la dernière version de Django 2.1 en utilisant cette commande.
pip install Django==2.1.*
Je pense que le problème est résolu.
J'ai résolu une situation similaire avec les correctifs de code suivants. Suivez ces étapes que j'ai utilisées sur mon propre centos7 et tout devrait bien se passer. N'oubliez pas de faire savoir à votre centos7 que vous appelez python3
pas seulement python
sinon il appellera le python2 par défaut suivi d'une série d'erreurs dans votre virtualenv
.
Installer python3 (depuis la source):
cd ~
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz
tar xJf Python-3.7.3.tar.xz
cd Python-3.7.3
./configure
make && make install
export PATH=$HOME/opt/python-3.7.3/bin:$PATH
Exécutez ensuite: source .bash_profile
Confirmation par
python3 --version
Python 3.7.3
Installer votre sqlite3 (depuis la source):
$ cd ~
$ wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz
$ tar zxvf sqlite-autoconf-3290000.tar.gz
cd sqlite-autoconf-3290000
$./configure --prefix=$HOME/opt/sqlite
$ make && make install
Maintenant, c'est ce que vous devez également vous rappeler de faire pour que centos7 sache où chercher votre python3 et non pas par défaut en python2. Sur ton .bash_profile
copiez et collez ce morceau de code ou modifiez les chemins en conséquence:
export PATH=$HOME/opt/sqlite/bin:$PATH
export LD_LIBRARY_PATH=$HOME/opt/sqlite/lib
export LD_RUN_PATH=$HOME/opt/sqlite/lib
Rendez-le permanent en exécutant: source .bash_profile
et vous avez terminé avec sqlite3 version >= 3.8
. Confirmez-le par:
sqlite3 --version
3.29.0 2019-07-10 17:32:03
Et puis vous pouvez continuer à utiliser python3 pour installer des modules python3 comme Django-2.2.
python3.7 -m pip3 install virtualenv
(myvenv37)[me@test my_project]$ python3.7 -m pip3 install Django
Successfully installed Django-2.2.3 pytz-2019.1 sqlparse-0.3.0
Rappelez-vous, c'est
PYTHON3.7 -m pip3 install MODULE
(myvenv37)[me@test my_project]$ python3.7 manage.py runserver
et le serveur doit être en cours d'exécution.
Donc, pour conclure, dans le cas ci-dessus, c'était migrate
, et devrait ressembler à ceci:
(venv)[me@test my_project]$ python3.7 manage.py migrate
Django 2.2 nécessite une version sqlite> = 3.8.3
donc la solution est de mettre à jour votre sqlite :
export LD_LIBRARY_PATH="/usr/local/lib"
et l'écrire dans ~/.bashrctest1:
sqlite3 --version
devrait être votre version
test2:
$python
>>> import sqlite3
>>> sqlite3.sqlite_version
devrait être votre version
J'ai eu le même problème et j'ai lutté avec lui pendant un certain temps. Pour moi, la meilleure solution était de commenter la section BASES DE DONNEES dans le fichier settings.py.
Comme je ne veux pas utiliser la base de données SQLite, le problème n'existe plus. Plus tard, vous pouvez mettre à jour les informations de la BASE DE DONNÉES avec la base de données qui vous convient.
une autre option consiste à utiliser le dépôt atomique
wget -O - http://updates.atomicorp.com/installers/atomic |sh
yum install atomic-sqlite
LD_LIBRARY_PATH='/opt/atomicorp/atomic/root/usr/lib64/' python3
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.8.5'