Por que o django 2 está disponível no python 2?
De acordo comNotas de versão do Django 2.0 O Django 2.0 em diante suportará apenas o python 3, tornando o 1.11.X a última série de lançamentos a suportar o python 2.
Veja a citação na página de notas de versão:
O Django 2.0 suporta Python 3.4, 3.5 e 3.6. É altamente recomendável e apoiamos apenas oficialmente a versão mais recente de cada série.
A série Django 1.11.x é a última a suportar o Python 2.7.
No entanto, ao executarpip2 install Django
, o django versão 2 está sendo instalado (que falhará porque assume a funcionalidade não disponível no 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/
Eu sei que posso especificar manualmente a versão do requisito abaixo de 2, tornando o pip install uma versão válida para python 2, no entanto, isso complicará o processo de instalação se eu quiser dar suporte ao python2 e python3 e teria assumido que o pip saberá instalar apenas versões compatíveis com o python que está sendo executado.
Minhas perguntas, portanto, são as seguintes:
Por que o pip está tentando instalar o Django2 com python2 em vez de escolher automaticamente a última versão compatível? Isso não faz parte depip
s capacidades?Existe uma maneira de fazer uma únicarequirements.txt
que instalaráDjango<2.0
ao executar a partir de python2 eDjango>=2.0
ao executar com python3?