aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2020-07-12 11:39:51 -0400
committerJason R. Coombs <jaraco@jaraco.com>2020-07-12 11:41:04 -0400
commit36df1d74933ef18a4099f4e82dbe55c00e45709e (patch)
tree55f15c34af86db91fd0b4f803d4e84c974a93333 /setuptools
parent6ecd778888512de5be198ffa4bb6ea33ee6f841f (diff)
downloadexternal_python_setuptools-36df1d74933ef18a4099f4e82dbe55c00e45709e.tar.gz
external_python_setuptools-36df1d74933ef18a4099f4e82dbe55c00e45709e.tar.bz2
external_python_setuptools-36df1d74933ef18a4099f4e82dbe55c00e45709e.zip
Warn the user when distutils is present to discourage this usage and direct users to the recommended usage. Closes #2230.
Diffstat (limited to 'setuptools')
-rw-r--r--setuptools/distutils_patch.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/setuptools/distutils_patch.py b/setuptools/distutils_patch.py
index c5f273dd..33f1e7f9 100644
--- a/setuptools/distutils_patch.py
+++ b/setuptools/distutils_patch.py
@@ -12,10 +12,26 @@ import importlib
import warnings
+is_pypy = '__pypy__' in sys.builtin_module_names
+
+
+def warn_distutils_present():
+ if 'distutils' not in sys.modules:
+ return
+ if is_pypy and sys.version_info < (3, 7):
+ # PyPy for 3.6 unconditionally imports distutils, so bypass the warning
+ # https://foss.heptapod.net/pypy/pypy/-/blob/be829135bc0d758997b3566062999ee8b23872b4/lib-python/3/site.py#L250
+ return
+ warnings.warn(
+ "Distutils was imported before Setuptools. This usage is discouraged "
+ "and may exhibit undesirable behaviors or errors. Please use "
+ "Setuptools' objects directly or at least import Setuptools first.")
+
+
def clear_distutils():
if 'distutils' not in sys.modules:
return
- warnings.warn("Setuptools is replacing distutils")
+ warnings.warn("Setuptools is replacing distutils.")
mods = [name for name in sys.modules if re.match(r'distutils\b', name)]
for name in mods:
del sys.modules[name]
@@ -40,5 +56,6 @@ def ensure_local_distutils():
assert '_distutils' in core.__file__, core.__file__
+warn_distutils_present()
if enabled():
ensure_local_distutils()