summaryrefslogtreecommitdiff
path: root/setup.py
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:25:05 -0500
commit32ade4d73b50aed77efdb9dd7371c17f89061afc (patch)
tree35199929e44448ef272561a1a4d229678355232c /setup.py
parent622ead6aaf55288cd355f22e8bb9c56d8e12556c (diff)
downloaddjango-32ade4d73b50aed77efdb9dd7371c17f89061afc.tar.gz
Fixed #28878 -- Added python_requires in setup.py and a warning for older pips that don't recognize it.
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/setup.py b/setup.py
index 1008ab55c7..32dfc9d291 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, 5)
+
+# 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',