Я переношу свой код 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, потому что это максимум, поддерживаемый AWS elasticbeanstalk. 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... но так приятно просто скопировать или выгрузить файл, перенести и загрузить данные для начала заново.
mock
данным? - person Михаил Павлов   schedule 07.06.2019