python-poetry/poetry · error · PackageNotFoundError

Package {name} ({version}) not found.

Error message

Package {name} ({version}) not found.

What it means

Raised by RepositoryPool.package after iterating every repository in the pool and finding none that contains the package at the requested version (repository_pool.py:155-166). Each repository's PackageNotFoundError is swallowed and re-raised as this aggregate miss. When repository_name is given, it delegates (and would instead raise error 90 if that source is unknown).

Source

Thrown at src/poetry/repositories/repository_pool.py:166

        if not self.has_repository(name):
            raise IndexError(
                f"RepositoryPool can not remove unknown repository '{name}'."
            )
        del self._repositories[name.lower()]
        return self

    def package(
        self, name: str, version: Version, repository_name: str | None = None
    ) -> Package:
        if repository_name:
            return self.repository(repository_name).package(name, version)

        for repo in self.repositories:
            try:
                return repo.package(name, version)
            except PackageNotFoundError:
                continue
        raise PackageNotFoundError(f"Package {name} ({version}) not found.")

    def find_packages(self, dependency: Dependency) -> list[Package]:
        repository_name = dependency.source_name
        if repository_name:
            return self.repository(repository_name).find_packages(dependency)

        packages: list[Package] = []
        for repo in self.repositories:
            if packages and self.get_priority(repo.name) is Priority.SUPPLEMENTAL:
                break
            packages += repo.find_packages(dependency)
        return packages

    def search(self, query: str | list[str]) -> list[Package]:
        results: list[Package] = []
        for repo in self.repositories:
            results += repo.search(query)
        return results

View on GitHub (pinned to 92b74dcfe3)

Solutions

  1. Confirm the package/version exists on at least one configured source.
  2. Add the source that actually hosts the package.
  3. Correct the name/version if it is a typo.
Defensive patterns

Strategy: try-catch

Try / catch

from poetry.repositories.exceptions import PackageNotFoundError
try:
    pkg = pool.package(name, version)
except PackageNotFoundError:
    log.error("%s %s not in any configured repository", name, version)
    raise

Prevention

When it happens

Trigger: pool.package(name, version) where no registered repository (including PyPI) has the package/version; or all repos raise PackageNotFoundError.

Common situations: Package/version genuinely absent from all configured sources; private source missing the release; wrong pool configuration (e.g. only a supplemental source configured).

Related errors


AI-assisted analysis of python-poetry/poetry@92b74dcfe3 (2026-08-04). Data as JSON: /data/errors/4a5d1bfa11547d48.json. Report an issue: GitHub.