diff --git a/AUTHORS b/AUTHORS index 97d512dea1..b1fa5456b6 100644 --- a/AUTHORS +++ b/AUTHORS @@ -845,6 +845,7 @@ answer newbie questions, and generally made Django that much better: ymasuda@ethercube.com Yoong Kang Lim Yusuke Miyazaki + Zac Hatfield-Dodds Zachary Voase Zach Liu Zach Thompson 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',