import os
import site
import sys
from distutils.sysconfig import get_python_lib
from setuptools import setup
# Allow editable install into user site directory.# See https://github.com/pypa/pip/issues/7953.site.ENABLE_USER_SITE = "--user" in sys.argv[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.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 existinginstallation, without removing it first. Because of this,your install may now include extraneous files from aprevious version that have since been removed fromDjango. This is known to cause a variety of problems. Youshould manually remove the%(existing_path)s
directory and re-install Django."""% {"existing_path": existing_path}
)