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 resultsView on GitHub (pinned to 92b74dcfe3)
Solutions
- Confirm the package/version exists on at least one configured source.
- Add the source that actually hosts the package.
- 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
- Ensure at least one source hosting the package is in the pool.
- Verify name/version against configured sources before resolving.
- Add a fallback (e.g. PyPI) source so common packages resolve.
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
- At least one source must not be configured as 'explicit'.
- No valid distribution links found for package: "{data.name}"
- Package [{name}] not found.
- Package [{name}] not found.
- Package {name} ({version}) not found.
AI-assisted analysis of python-poetry/poetry@92b74dcfe3 (2026-08-04).
Data as JSON: /data/errors/4a5d1bfa11547d48.json.
Report an issue: GitHub.