Немного магии, с которой столкнулся при использовании djongo (3-я буква отличается!) модуля Django для работы с MongoDB.
Все началось с ошибки:
django.core.exceptions.ImproperlyConfigured: 'djongo' isn't an available database backend. Try using 'django.db.backends.XXX', where XXX is one of: 'mysql', 'oracle', 'postgresql', 'sqlite3' |
Решений в интернете много, но проблема в том, что на одном и тоже компьютере при использовании venv
ошибка была, а при работе без него — нет.
Немного раскопав зависимости удалось понять, что при установке, сначала django, потом djongo:
(venv) ➜ django_docs cat requirements.txt django>=2.2,<3 djongo |
Python ругается на sqlparse:
ERROR: djongo 1.3.2 has requirement sqlparse==0.2.4, but you'll have sqlparse 0.3.1 which is incompatible. Installing collected packages: sqlparse, pytz, django, dataclasses, pymongo, six, python-dateutil, bson, djongo Successfully installed bson-0.5.8 dataclasses-0.7 django-2.2.12 djongo-1.3.2 pymongo-3.10.1 python-dateutil-2.8.1 pytz-2019.3 six-1.14.0 sqlparse-0.3.1 |
и при этом «портится» библиотека bson (2 файла, один из которых init):
(venv) ➜ django_docs ls -la venv/lib/python3.6/site-packages/bson/__init__.py -rw-r--r-- 1 Air staff 2264 15 апр 21:25 venv/lib/python3.6/site-packages/bson/__init__.py |
Исправление или явно описать версию sqlparse или менять порядок установки:
(venv) ➜ django_docs cat requirements.txt sqlparse==0.2.4 django>=2.2,<3 djongo |
(venv) ➜ django_docs ls -la venv/lib/python3.6/site-packages/bson/__init__.py -rw-r--r-- 1 Air staff 46012 15 апр 21:28 venv/lib/python3.6/site-packages/bson/__init__.py |