summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac-HD <zac.hatfield.dodds@gmail.com>2017-12-04 10:24:14 +1100
committerTim Graham <timograham@gmail.com>2017-12-22 18:30:50 -0500
commit45d89856fcf103e8f109e76eea548149bd7e0ced (patch)
tree6201094f5df1faadc8ac13fa57a2dd191a1d1d9a
parentb40a1d774d6e7dc0a3663a69c3a8a9b8793d31ff (diff)
[2.0.x] Fixed #28878 -- Added python_requires in setup.py and a warning for older pips that don't recognize it.
Backport of 32ade4d73b50aed77efdb9dd7371c17f89061afc from master
-rw-r--r--AUTHORS1
-rw-r--r--setup.py30
2 files changed, 31 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
index 8e92aa9fd4..80710c3e75 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -841,6 +841,7 @@ answer newbie questions, and generally made Django that much better:
ymasuda@ethercube.com
Yoong Kang Lim <yoongkang.lim@gmail.com>
Yusuke Miyazaki <miyazaki.dev@gmail.com>
+ Zac Hatfield-Dodds <zac.hatfield.dodds@gmail.com>
Zachary Voase <zacharyvoase@gmail.com>
Zach Liu <zachliu@gmail.com>
Zach Thompson <zthompson47@gmail.com>
diff --git a/setup.py b/setup.py
index 801be5bbda..93264f43a4 100644
--- a/setup.py
+++ b/setup.py
@@ -4,6 +4,35 @@ from distutils.sysconfig import get_python_lib
from setuptools import find_packages, setup
+CURRENT_PYTHON = sys.version_info[:2]
+REQUIRED_PYTHON = (3, 4)
+
+# This check and everything above must remain compatible with Python 2.7.
+if CURRENT_PYTHON < REQUIRED_PYTHON:
+ sys.stderr.write("""
+==========================
+Unsupported Python version
+==========================
+
+This version of Django requires Python {}.{}, but you're trying to
+install it on Python {}.{}.
+
+This may be because you are using a version of pip that doesn't
+understand the python_requires classifier. Make sure you
+have pip >= 9.0 and setuptools >= 24.2, then try again:
+
+ $ python -m pip install --upgrade pip setuptools
+ $ python -m pip install django
+
+This will install the latest version of Django which works on your
+version of Python. If you can't upgrade your pip (or Python), request
+an older version of Django:
+
+ $ python -m pip install "django<2"
+""".format(*(REQUIRED_PYTHON + CURRENT_PYTHON)))
+ sys.exit(1)
+
+
# Warn if we are installing over top of an existing installation. This can
# cause issues where files that were deleted from a more recent Django are
# still present in site-packages. See #18115.
@@ -35,6 +64,7 @@ version = __import__('django').get_version()
setup(
name='Django',
version=version,
+ python_requires='>={}.{}'.format(*REQUIRED_PYTHON),
url='https://www.djangoproject.com/',
author='Django Software Foundation',
author_email='foundation@djangoproject.com',