pip install --upgrade postorius pulls Django-2.0
pip install --upgrade postorius
Collecting postorius
Downloading postorius-1.1.2.tar.gz (383kB)
100% |████████████████████████████████| 389kB 1.8MB/s
Collecting Django>=1.8 (from postorius)
Downloading Django-2.0.tar.gz (8.0MB)
100% |████████████████████████████████| 8.0MB 136kB/s
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-MRPqHR/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 /tmp/pip-build-MRPqHR/Django/
From my understanding the install_requires list is read line by line and thus pip tries to satisfy Django>=1.8 first.
According to https://packaging.python.org/discussions/install-requires-vs-requirements/#install-requires-vs-requirements-files, the correct way to require a range would be Django>=1.8,<1.12
.