-
-
Notifications
You must be signed in to change notification settings - Fork 92
Description
(I'll preface this by saying that I think this might be similar to #101. It also feels like something that must have been reported elsewhere but my search-fu isn't sufficient to find those previous report(s))
If a {package}.egg-info
directory exists and you're using a virtualenv, the importlib_metadata.distributions()
function returns a duplicate distribution. Since this function is used by importlib_metadata.entry_points()
, you'll also see a duplicate set of entrypoints. For example, consider the following using the simplest package I could find:
❯ cd /tmp
❯ git clone https://github.com/stephenfin/clouds2env
❯ cd clouds2env
❯ virtualenv .venv
❯ source .venv/bin/activate
❯ pip install . importlib-metadata
import importlib_metadata
for dist in importlib_metadata.distributions():
if not dist.entry_points:
continue
print(dist._path)
for ep in dist.entry_points:
print(f'\t{ep}')
print('***')
This returns something like the following:
clouds2env.egg-info
EntryPoint(name='clouds2env', value='clouds2env:main', group='console_scripts')
***
/tmp/clouds2env/.venv/lib/python3.10/site-packages/clouds2env-1.1.1.dev1+g6d0ecef.dist-info
EntryPoint(name='clouds2env', value='clouds2env:main', group='console_scripts')
***
/tmp/clouds2env/.venv/lib/python3.10/site-packages/setuptools-62.3.2.dist-info
... {truncated} ...
***
/tmp/clouds2env/.venv/lib/python3.10/site-packages/wheel-0.37.1.dist-info
... {truncated} ...
***
/tmp/clouds2env/.venv/lib/python3.10/site-packages/pip-22.1.1.dist-info
... {truncated} ...
We're not installing anything in editable mode so I think the distributions are actually the same and the info from egg-info
should be ignore in favour of the info from the dist-info
directory. I also see attempts to deduplicate the returned entrypoints in importlib_metadata.entrypoints()
but I haven't dived into why this isn't working (or whether preventing this issue is even the goal of that code).
Additional info
❯ virtualenv --version
virtualenv 20.13.4 from /usr/lib/python3.10/site-packages/virtualenv/__init__.py
❯ pip freeze
clouds2env @ file:///tmp/clouds2env
importlib-metadata==5.0.0
PyYAML==6.0
zipp==3.8.1
❯ cat /etc/system-release
Fedora release 36 (Thirty Six)