setuptools version
setuptools==60.0.4
Python version
python3.8
OS
Any
Additional environment information
N/A
Description
The _DistutilsMetaFinder meta_path finder shim is installed multiple times, at least twice by site.py via the .pth shim, and once by ensure_local_distutils when setuptools is actually imported. It's unlikely to be a problem, especially since it's literally the same instance, but add_shim should be idempotent instead of blindly inserting the shim each time it's called. It also appears that the intent was to remove the shim entirely once distutils has been loaded, but since it's added more than once, the removal in the import leaves two references to it in sys.meta_path after setuptools has been imported.
Expected behavior
After setuptools has been imported, the distutils shim finder is no longer on the meta path.
How to Reproduce
(with setuptools>60 installed):
python -c "import sys; print(f'Before: {sys.meta_path}'); import setuptools; print(f'After: {sys.meta_path}')"
Output
Before: [<_distutils_hack.DistutilsMetaFinder object at 0x7fe4d2688700>, <_distutils_hack.DistutilsMetaFinder object at 0x7fe4d2688700>, <_virtualenv._Finder object at 0x7fe4d2806f70>, <class '_frozen_importlib.BuiltinImporter'>, <class '_frozen_importlib.FrozenImporter'>, <class '_frozen_importlib_external.PathFinder'>]
After: [<_distutils_hack.DistutilsMetaFinder object at 0x7fe4d2688700>, <_distutils_hack.DistutilsMetaFinder object at 0x7fe4d2688700>, <_virtualenv._Finder object at 0x7fe4d2806f70>, <class '_frozen_importlib.BuiltinImporter'>, <class '_frozen_importlib.FrozenImporter'>, <class '_frozen_importlib_external.PathFinder'>, <pkg_resources.extern.VendorImporter object at 0x7fe4d21c5460>, <setuptools.extern.VendorImporter object at 0x7fe4d1f2a100>]
Code of Conduct
setuptools version
setuptools==60.0.4
Python version
python3.8
OS
Any
Additional environment information
N/A
Description
The _DistutilsMetaFinder meta_path finder shim is installed multiple times, at least twice by
site.pyvia the.pthshim, and once byensure_local_distutilswhensetuptoolsis actually imported. It's unlikely to be a problem, especially since it's literally the same instance, butadd_shimshould be idempotent instead of blindly inserting the shim each time it's called. It also appears that the intent was to remove the shim entirely once distutils has been loaded, but since it's added more than once, the removal in the import leaves two references to it insys.meta_pathafter setuptools has been imported.Expected behavior
After setuptools has been imported, the distutils shim finder is no longer on the meta path.
How to Reproduce
(with setuptools>60 installed):
python -c "import sys; print(f'Before: {sys.meta_path}'); import setuptools; print(f'After: {sys.meta_path}')"
Output
Code of Conduct