X Tutup
The Wayback Machine - https://web.archive.org/web/20260322060320/https://github.com/python/cpython/issues/94113
Skip to content

importlib.metadata.packages_distributions does not see all packages installed on sys.path #94113

@pfmoore

Description

@pfmoore

Bug report

If I install rich in a temporary directory and then add that directory to sys.path, importlib.metadata.packages_distributions cannot see rich (even though it can see dependencies of rich like pygments).

Reproducer:

import sys
import subprocess
import shutil
from pathlib import Path

tst = Path("test")
tst.mkdir()

subprocess.run([sys.executable, "-m", "pip", "install", "-t", str(tst), "rich"])

reproducer = Path("reproducer.py")
reproducer.write_text(f"""\
import sys
import importlib.metadata
sys.path.append({repr(str(tst))})
import rich # to confirm rich is importable
dists = importlib.metadata.packages_distributions()
print(dists)
print("Rich version is accessible:", importlib.metadata.version("rich"))
if not "rich" in dists:
    print("Rich is not visible to importlib.metadata.package_distributions")
# Oddly, dependencies of rich (in the same sys.path entry) *are* visible
if "pygments" in dists:
    print("Pygments *is* visible to importlib.metadata.package_distributions")
"""
)
subprocess.run([sys.executable, str(reproducer)])

# tidy up
reproducer.unlink()
shutil.rmtree(tst)

Your environment

  • CPython versions tested on: 3.10
  • Operating system and architecture: Windows 11, 64-bit.
  • Tested in a clean virtual environment created using py -m venv .venv

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      X Tutup