packageurl-python
A purl aka. Package URL parser and builder
Install
packageurl-python on PyPI
pip
pip install packageurl-pythonuv
uv add packageurl-pythonpoetry
poetry add packageurl-pythonPackage facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 262 days since the last release |
| Last repo commit | |
| First released | |
| Popularity | one of the top 1,000 most-downloaded packages on PyPI (30-day window, as of 2026-08-13) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-13) |
Evidence: packageurl_python-0.17.6-py3-none-any.whl
Keywords: package, url, package manager, package url
About packageurl-python
from the package's own PyPI description — quoted content, verbatim
================= packageurl-python =================
Python library to parse and build "purl" aka. Package URLs. See https://github.com/package-url/purl-spec for details.
Join the discussion at https://gitter.im/package-url/Lobby or enter a ticket for support.
License: MIT
Tests and build status
+----------------------+ | Tests and build | +======================+ | |ci-tests| | +----------------------+
Install
::
pip install packageurl-python
Usage
::
>>> from packageurl import PackageURL
>>> purl = PackageURL.from_string("pkg:maven/org.apache.commons/io@1.3.4")
>>> print(purl.to_dict())
{'type': 'maven', 'namespace': 'org.apache.commons', 'name': 'io', 'version': '1.3.4', 'qualifiers': None, 'subpath': None}
>>> print(purl.to_string())
pkg:maven/org.apache.commons/io@1.3.4
>>> print(str(purl))
pkg:maven/org.apache.commons/io@1.3.4
>>> print(repr(purl))
PackageURL(type='maven', namespace='org.apache.commons', name='io', version='1.3.4', qualifiers={}, subpath=None)
Utilities
Django models ^^^^^^^^^^^^^
packageurl.contrib.django.models.PackageURLMixin is...
Read as markdown · JSON record · Source repository · Homepage
AI interpretation — verify before relying
AI-generated interpretation of the package facts above; every digit, version, license, or vulnerability id it cites is grounded in the facts already shown on this page
Parses and builds Package URLs (purls) according to the purl specification, enabling standardized identification and manipulation of software packages across different package managers.
Installs cleanly with zero runtime dependencies and low friction. Actively maintained with a recent release (262 days ago) and ongoing repository activity.
MIT license permits commercial and private use with minimal restrictions; suitable for most projects without licensing concerns.
Usage
pip install packageurl-python
from packageurl import PackageURL
purl = PackageURL.from_string("pkg:maven/org.apache.commons/io@1.3.4")
print(purl.to_string())
Requires Python 3.8 or later.
Verdict: A lightweight, well-maintained library for parsing and building standardized package identifiers. Zero dependencies, permissive MIT license, active development, and no known vulnerabilities make it a low-risk choice for projects needing purl support.
Needs verification
- Whether the Django and SQLAlchemy contrib modules require those frameworks as optional dependencies.
- Performance characteristics when parsing large numbers of purls or handling edge cases in package identifiers.
Similar packages
permissive · top 100 on PyPI
cyclonedx-python-libpermissive · top 1,000 on PyPI
pydantic-ai-slimpermissive · top 1,000 on PyPI
oauthlibpermissive · top 1,000 on PyPI
pbrpermissive · top 1,000 on PyPI
pathspeccopyleft · top 100 on PyPI
semgrepcopyleft · top 1,000 on PyPI
altairpermissive · top 1,000 on PyPI
joblibpermissive · top 1,000 on PyPI
ImageIOpermissive · top 1,000 on PyPI