0
0
mirror of https://github.com/django/django.git synced 2024-11-29 14:46:18 +01:00
django/setup.py
Nick Pope 78eaae9bf1
Removed obsolete version check in setup.py.
This was originally added to ensure that Django 2.0+ could not be
installed on Python 2.7 or earlier, in particular where the version of
pip or setuptools being used did not support the python_requires
argument.

Unfortunately, as REQUIRED_PYTHON has been bumped, this check no longer
satisfies its original purpose and could be misleading, e.g. if
REQUIRED_PYTHON is 3.8 and CURRENT_PYTHON is 3.7 it would request that
Django < 2 is installed, but there are later versions of Django that
support Python 3.7.

By the time Django 4 is released in December 2021, the python_requires
argument will have been supported for over five years, and Python 2 will
have been EOL for nearly two years, so we can remove this check.

See https://packaging.python.org/guides/distributing-packages-using-setuptools/#python-requires
2021-04-15 08:12:35 +02:00

48 lines
1.4 KiB
Python

import os
import sys
from distutils.sysconfig import get_python_lib
from setuptools import setup
# 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.
overlay_warning = False
if "install" in sys.argv:
lib_paths = [get_python_lib()]
if lib_paths[0].startswith("/usr/lib/"):
# We have to try also with an explicit prefix of /usr/local in order to
# catch Debian's custom user site-packages directory.
lib_paths.append(get_python_lib(prefix="/usr/local"))
for lib_path in lib_paths:
existing_path = os.path.abspath(os.path.join(lib_path, "django"))
if os.path.exists(existing_path):
# We note the need for the warning here, but present it after the
# command is run, so it's more likely to be seen.
overlay_warning = True
break
setup()
if overlay_warning:
sys.stderr.write("""
========
WARNING!
========
You have just installed Django over top of an existing
installation, without removing it first. Because of this,
your install may now include extraneous files from a
previous version that have since been removed from
Django. This is known to cause a variety of problems. You
should manually remove the
%(existing_path)s
directory and re-install Django.
""" % {"existing_path": existing_path})