Я перемещаю свой код Django из 2.1.7 прямо в новый Django 2.2. Единственная проблема, с которой я столкнулся в моей среде разработки Centos7, заключалась в том, что моя локальная версия базы данных (sqlite3) была несовместима с моим Python 3.6.7.
Ошибка, которую я получал от "manage.py runserver", была:
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later
Я не могу использовать другую версию Python, потому что это максимум, поддерживаемый AWSasticbeanstalk. Python 3.6.7, кажется, поставляется с модулем sqlite версии:
>>> import sqlite3
>>> sqlite3.version
'2.6.0'
>>> sqlite3.sqlite_version
'3.7.17'
>>>
Я использую отдельную учетную запись для разработки на своей локальной рабочей станции Centos7 и выдаю оболочку pipenv , чтобы начать разработку кода и IDE.
Единственный найденный мной обходной путь - это загрузить SQLite3 autoconf версии 3.27.2 вручную и вручную скомпилировать его в домашнюю папку учетной записи разработчика с помощью следующих команд:
wget https://www.sqlite.org/2019/sqlite-autoconf-3270200.tar.gz
gzip -d sqlite-autoconf-3270200.tar.gz
tar -xvf sqlite-autoconf-3270200.tar
cd sqlite-autoconf-3270200/
./configure --prefix=/home/devuser/opt/
make
make install
После этого я изменил свой .bashrc, чтобы отразить следующее:
export LD_LIBRARY_PATH="${HOME}/opt/lib"
Кажется, это помогает, когда я снова захожу в свою учетную запись devuser. Кажется, что мое приложение работает правильно, используя мою локальную базу данных разработки.
Python 3.6.7 (default, Dec 5 2018, 15:02:05)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
>>>import sqlite3
>>> sqlite3.version
'2.6.0'
>>> sqlite3.sqlite_version
'3.27.2'
Моя локальная база данных для разработки - SQLite, но мой файл settings.py не загружает никакой базы данных SQLite3, когда обнаруживает, что она работает в AWS (использует производственную базу данных Mysql в качестве бэкэнда, когда установлен флажок переменной среды PRODUCTION).
Правильно ли я понимаю проблему и приемлемы ли мой подход и реализация?
Я чувствовал, что перекомпиляция python была огромной тратой времени, и, честно говоря, возможно, было бы быстрее вывести локальную версию mysql и перестать тратить время на sqlite ... но так приятно просто скопировать или вывести дамп файл, миграция и loaddata для нового начала.
Если вы считаете, что мой вопрос или замечания заслуживают внимания, пожалуйста, дайте мне толчок!
Кроме того, может ли кто-нибудь с репутацией 1500 или более создать тег "django-2.2", чтобы этот вопрос можно было правильно пометить?
Спасибо!