# Announcement: pip 25.3 release!

**URL:** <https://discuss.python.org/t/announcement-pip-25-3-release/104550>\
**Category:** Announcements\
**Tags:** release\
**Created:** [October 25, 2025, 2:23pm UTC](https://discuss.python.org/t/announcement-pip-25-3-release/104550 "2025-10-25T14:23:42Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![notatallshaw](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/notatallshaw/32/10861_2.png) [@notatallshaw](https://discuss.python.org/u/notatallshaw)\
**Post date:** [October 25, 2025, 2:23pm UTC](https://discuss.python.org/t/announcement-pip-25-3-release/104550/1 "2025-10-25T14:23:42Z")

</div>

On behalf of the PyPA, I am pleased to announce that the pip team has just released pip 25.3.

> **[Client Challenge](https://pypi.org/project/pip/25.3/)**

This is the fourth and final major release of pip for the year 2025. You can read more about our versioning, deprecation policy, and release process [here](https://pip.pypa.io/en/stable/development/release-process/).

## Highlights

- Removed non-PEP 517 package build support:

- Removed non-PEP 660 editable installs, so pip will no longer call `setup.py develop`, if you use editable installs with setuptools you must now use `setuptools >= 64`.

- Added a new option, `--build-constraint`, which allows you to specify your build time constraints without affecting your install constraints. Using `PIP_CONSTRAINT` to specify build constraints is now deprecated, if you are using build constraints this way now you can preserve the same behavior by pointing `PIP_CONSTRAINT` and `PIP_BUILD_CONSTRAINT` to the same file.

- When PEP 658 metadata is available from the remote index `pip install --dry-run` and `pip lock` will no longer download full distributions.

- Support editable requirements as Direct URLs, e.g. `pip install -e "pkgb @ file://$PWD/pkga"`.

- Use a temporary directory in the wheel cache to build wheels, so the built wheel is always on the same filesystem as the wheel cache, and can be atomically moved into the cache.

- Pip itself is now built with `flit-core` instead of `setuptools`.

Beyond this list, 25.3 contains additional bug fixes and smaller QoL improvements. Please consult our [changelog](https://pip.pypa.io/en/stable/news/) for more information.

## Release process

This release was built and published to PyPI using a [GitHub workflow](https://github.com/pypa/pip/blob/main/.github/workflows/release.yml) and a [PyPI Trusted Publisher](https://docs.pypi.org/trusted-publishers/).

## Thanks

As with all pip releases, a significant amount of the work was contributed by pip’s user community. Many thanks to all who have contributed, whether through code, documentation, issue reports and/or discussion. Your help keeps pip improving, and is hugely appreciated.

I would particularly like to thank @sbidoul, who got the removal of non-PEP 517 builds over the line, [PEP 517](https://peps.python.org/pep-0517/) has been with us for over 10 years now, and non-PEP 517 builds have been deprecated for [over 6 years](https://github.com/pypa/pip/issues/6334). But the Python packaging ecosystem is huge and removing old flows takes a sustained and continual push by countless people to move to modern practices, thanks to anyone who has helped in any way.

I would further like to thank @ichard26, who, while not authoring as many PRs in this release significantly helped by providing invaluable code reviews.

Regards,  
Damian

_P.S. As with Richard and the last release, this is my first time as release manager. It’s a tricky task to make sure pip keeps moving forward but being careful and respectful that so many people depend on it._

---

_[View the full topic](https://discuss.python.org/t/announcement-pip-25-3-release/104550)._
