Upgrading pip 24 to 25
Breaking24.3.1 → 25.3Breaking5Security2Platform2Deprecated5New13Changed61Fixed40Other5
Securitypip's fallback tar extraction doesn't check symbolic links point to extraction directoryGHSA-4xh5-x5gv-qwph · CVE-2025-8869 ↗
BreakingUpgrade verdict
5 breaking changes and 2 platform requirement changes and 2 security fixes.
In plain terms
- Editable installs no longer use the old setuptools develop mechanism, so you need setuptools version 64 or newer.
- The old flags for passing options to package builds are gone; use --config-setting instead.
- Wheels with non-standard legacy filenames are no longer accepted.
- Packages can no longer be built with the old bdist_wheel path; PEP 517 builds are always used.
Must act Top 5 of 14 that need code or config changes
Python requirement changed in 25.1: >=3.8 → >=3.9.
What you must change
Breaking5
Removes support for the legacy setup.py develop editable method in setuptools editable installs; setuptools >= 64 is now required.
setup.py developRemoves the deprecated --global-option and --build-option; --config-setting is now the only way to pass options to the build backend.
--global-option--build-option--config-settingRemoves support for non-standard legacy wheel filenames.
Removes support for the deprecated setup.py bdist_wheel mechanism; --use-pep517 is always on and --no-use-pep517 is removed.
setup.py bdist_wheel--use-pep517--no-use-pep517On Python 3.14+, the pkg_resources metadata backend can no longer be used.
pkg_resourcesSecurity2
pip's fallback tar extraction doesn't check symbolic links point to extraction directory
Fixes a security bug allowing a specially crafted wheel to execute code during installation.
Platform2
Declares support for Python 3.14.
Drops support for Python 3.8.
Deprecations to plan for
Deprecated5
Deprecates the PIP_CONSTRAINT environment variable for build constraints in favor of --build-constraint or PIP_BUILD_CONSTRAINT.
PIP_CONSTRAINT--build-constraintPIP_BUILD_CONSTRAINT--use-feature=build-constraintHides --no-python-version-warning from help and docs but keeps it as a no-op flag.
--no-python-version-warningEmits a warning when the deprecated pkg_resources library is used to inspect installed packages.
pkg_resourcesimportlib.metadataDeprecates the legacy setup.py bdist_wheel mechanism.
setup.py bdist_wheel--use-pep517pyproject.tomlDeprecates the no-python-version-warning flag, which has done nothing since Python 2 support was removed in pip 21.0.
no-python-version-warningAPI changes
Generated by DepDelta from published Python source. Not mixed with prose notes.
- changed:
function main(args: Optional[List[str]]=…) -> int → function main(args: list[str] | None=…) -> int