Это установит одну и пропустит другую зависимость django, в зависимости от того, какой питон вы используете:
сно сПримечания к выпуску Django 2.0 Django 2.0 и выше будет поддерживать только Python 3, что делает 1.11.X последним выпуском, поддерживающим Python 2.
Смотрите цитату со страницы заметок о выпуске:
Django 2.0 поддерживает Python 3.4, 3.5 и 3.6. Мы настоятельно рекомендуем и только официально поддерживаем последний выпуск каждой серии.
Серия Django 1.11.x - последняя, которая поддерживает Python 2.7.
Однако при запускеpip2 install Django
, устанавливается версия django 2 (которая затем завершается ошибкой, поскольку предполагает, что функциональность недоступна в python 2):
(venv-crap) mbp15:server nir$ pip2 install django
Collecting django
Downloading Django-2.0.tar.gz (8.0MB)
100% |████████████████████████████████| 8.0MB 177kB/s
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/PATH/django/setup.py", line 32, in <module>
version = __import__('django').get_version()
File "django/__init__.py", line 1, in <module>
from django.utils.version import get_version
File "django/utils/version.py", line 61, in <module>
@functools.lru_cache()
AttributeError: 'module' object has no attribute 'lru_cache'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/PATH/django/
Я знаю, что могу вручную указать версию требования ниже 2, что делает установку pip верной для python 2, однако это усложнит процесс установки, если я захочу поддерживать как python2, так и python3, и предположил бы, что pip установит только совместимые версии с питоном, с которого он бежит.
Поэтому мои вопросы таковы:
Почему pip пытается установить Django2 с python2 вместо автоматического выбора последней совместимой версии? Разве это не частьpip
возможности?Есть ли способ сделать синглrequirements.txt
это установитDjango<2.0
при запуске из python2 иDjango>=2.0
когда работает с python3?