【发布时间】:2018-05-18 08:13:53
【问题描述】:
根据Django 2.0 release notes 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 会知道安装仅与运行它的 python 兼容的版本。
因此,我的问题如下:
- 为什么 pip 尝试使用 python2 安装 Django2 而不是自动选择最后一个兼容版本?这不是
pips 能力的一部分吗? - 有没有办法制作一个
requirements.txt,在从python2运行时安装Django<2.0,在使用python3运行时安装Django>=2.0?
【问题讨论】:
-
第一个问题请见ticket 28878
标签: python django python-3.x python-2.7 pip