NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1992 most downloaded on PyPI
The PEX packaging toolchain.
Last release 11 days ago
18 Sep 2026
Ships fairly regularly
a new release about every 9 days
Nearly every release is documented
notes for 60 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
13 years old
508 releases · first in 2014
This release fixes a regression in handling explicitly requested --index or --find-links http (insecure) repos. In addition, performance of the pex 2.
This release fixes a regression in handling explicitly requested
--index or --find-links http (insecure) repos. In addition,
performance of the pex 2.x resolver is brought in line with the 1.x
resolver in all cases and improved in most cases.
This is a hotfix release that fixes a bug exposed when Pex was asked to use an interpreter with a non-canonical path as well as fixes for 'current' pl
This is a hotfix release that fixes a bug exposed when Pex was asked to use an interpreter with a non-canonical path as well as fixes for 'current' platform handling in the resolver API.
iter_compatible_interpreters path biasing. (#798)One column per quarter.
This is a hotfix release that fixes a bug when specifying a custom index (-i/--index/--index-url) via the CLI.
This is a hotfix release that fixes a bug when specifying a custom index
(-i/--index/--index-url) via the CLI.
__str__ (#795)The deprecated --interpreter-cache-dir CLI option was removed.
Pex 2.0.0 is cut on the advent of a large, mostly internal change for typical use cases: it now uses vendored pip to perform resolves and wheel builds. This fixes a large number of compatibility and correctness bugs as well as gaining feature support from pip including handling manylinux2010 and manylinux2014 as well as VCS requirements and support for PEP-517 & PEP-518 builds.
API changes to be wary of:
--interpreter-cache-dir CLI option was removed.--cache-ttl CLI option and cache_ttl resolver API argument
were removed.fetchers with a list of indexes and a
list of find_links repos.context which is now automatically
handled.precedence which is now pip default
precedence: wheels when available and not ruled out via the
--no-wheel CLI option or use_wheel=False API argument.--platform CLI option and platform resolver API argument now
must be full platform strings that include platform, implementation,
version and abi; e.g.: --platform=macosx-10.13-x86_64-cp-36-m.--manylinux CLI option and use_manylinux resolver API
argument were removed. Instead, to resolve manylinux wheels for a
foreign platform, specify the manylinux platform to target with an
explicit --platform CLI flag or platform resolver API argument;
e.g.: --platform=manylinux2010-x86_64-cp-36-m.In addition, Pex 2.0.0 now builds reproducible pexes by default; ie:
--compile if you want this).--use-system-time to change this).This finishes off the effort tracked by issue #716.
Changes in this release:
This release adds the --intransitive option to support pre-resolved requirements lists and allows for python binaries built under Gentoo naming conven
This release adds the --intransitive option to support pre-resolved
requirements lists and allows for python binaries built under Gentoo
naming conventions.
--intransitive option. (#775)This release brings a consistency fix to requirement resolution and an isolation fix that scrubs all non-stdlib PYTHONPATH entries by default, only pr
This release brings a consistency fix to requirement resolution and an
isolation fix that scrubs all non-stdlib PYTHONPATH entries by default,
only pre-pending or appending them to the sys.path if the
corresponding --inherit-path=(prefer|fallback) is used.
PYTHONPATH in --inherit-path
logic. (#765)This is a hotfix release for the bug detailed in #756 that was introduced by #752 in python 3.7 interpreters.
This is a hotfix release for the bug detailed in #756 that was introduced by #752 in python 3.7 interpreters.
__file__ of
None. (#757)Fix sys.path scrubbing of pex extras modules.
sys.path scrubbing of pex extras modules. (#752)Fixup pex re-exec during bootstrap.
setup.py project extras. (#739)We now support reproducible builds when creating a pex via pex -o foo.pex, meaning that if you were to run the command again with the same inputs, the
We now support reproducible builds when creating a pex via pex -o foo.pex, meaning that if you were to run the command again
with the same inputs, the two generated pexes would be byte-for-byte
identical. To enable reproducible builds when building a pex, use the
flags --no-use-system-time --no-compile, which will use
a deterministic timestamp and not include .pyc files in
the Pex.
In Pex 1.7.0, we will default to reproducible builds.
--no-use-system-time flag to use a
deterministic timestamp in built PEX (#722)--no-compile flag to not include .pyc
in built pex due to its non-determinism (#718)PexInfo is isolated from
os.environ. (#711)This is the first release including only a single PEX pex, which supports execution under all interpreters pex supports.
This is the first release including only a single PEX pex, which supports execution under all interpreters pex supports.
This release fixes long-broken resolution of abi3 wheels.
This release fixes long-broken resolution of abi3 wheels.
This release un-breaks lambdex.
This release un-breaks lambdex.
pex.pex_bootstrapper.is_compressed API. (#685)Now interpreter constraints are ORed, which is likely a breaking change if you have scripts that pass multiple interpreter constraints. To transition,…
This release changes the behavior of the --interpreter-constraint
option. Previously, interpreter constraints were ANDed, which made it
impossible to express constraints like '>=2.7,<3' OR '>=3.6,<4';
ie: either python 2.7 or else any python 3 release at or above 3.6. Now
interpreter constraints are ORed, which is likely a breaking change if
you have scripts that pass multiple interpreter constraints. To
transition, use the native , AND operator in your constraint
expression, as used in the example above.
run_pex_command more robust. (#670)Support de-vendoring for installs.
Fix invalid regex and escape sequences causing DeprecationWarning
tox -evendor idempotent. (#651)Fix pex force local to handle PEP 420.
setuptools and wheel. (#624)Fixup PEXEnvironment extras resolution.
This release brings an exit code fix for pexes run via entrypoint as well as a fix for finding scripts when building pexes from wheels with dashes in
This release brings an exit code fix for pexes run via entrypoint as well as a fix for finding scripts when building pexes from wheels with dashes in their distribution name.
This release brings a fix to handle top-level requirements with environment markers, fully completing environment marker support.
This release brings a fix to handle top-level requirements with environment markers, fully completing environment marker support.
This release fixes pexes such that they fully support environment markers, the canonical use case being a python 2/3 pex that needs to conditionally l
This release fixes pexes such that they fully support environment markers, the canonical use case being a python 2/3 pex that needs to conditionally load one or more python 2 backport libs when running under a python 2 interpreter only.
This is a hotfix release for 1.4.8 that fixes a regression in interpreter setup that could lead to resolved distributions failing to build or install.
This is a hotfix release for 1.4.8 that fixes a regression in interpreter setup that could lead to resolved distributions failing to build or install.
PexInfo and PythonInterpreter.
(#581)This release adds support for -c and -m PEX file runtime options that emulate the behavior of the same arguments to python as well a fix for handling
This release adds support for -c and -m
PEX file runtime options that emulate the behavior of the same arguments
to python as well a fix for handling the non-standard
platform reported by setuptools for Apple system interpreters in
addition to several other bug fixes.
-m and -c in interpreter
mode. (#563)This is a hotfix release for a regression in setuptools compatibility introduced by #542.
This is a hotfix release for a regression in setuptools compatibility introduced by #542.
PEX.demote_bootstrap: fully unimport. (#554)This release opens up setuptools support for more modern versions that support breaking changes in setup used in the wild.
This release opens up setuptools support for more modern versions that
support breaking changes in setup used in the wild.
- when running as an interpreter. (#543)This release adds support for validating pex entrypoints at build time in addition to several bugfixes.
This release adds support for validating pex entrypoints at build time in addition to several bugfixes.
.travis.yml. (#524)PythonInterpreter caching and ergonomics. (#518)This release adds support for including sources and resources directly in a produced pex - without the need to use pants.
This release adds support for including sources and resources directly in a produced pex - without the need to use pants.
Another bugfix release for the 1.4.x series.
Another bugfix release for the 1.4.x series.
This release repairs a tag matching regression for .egg dists that inadvertently went out in 1.4.1.
This release repairs a tag matching regression for .egg dists that inadvertently went out in 1.4.1.
Repair .egg resolution for platform specific eggs.
A bugfix release for 1.4.x.
This release includes full Manylinux support, improvements to wheel resolution (including first class platform/abi tag targeting) and a handful of oth
This release includes full Manylinux support, improvements to wheel resolution (including first class platform/abi tag targeting) and a handful of other improvements and bugfixes. Enjoy!
Special thanks to Dan Blanchard (@dan-blanchard) for seeding the initial PR for Manylinux support and wheel resolution improvements.
Add blacklist handling for skipping requirements in pex resolver
This is a bugfix release for a regression that inadvertently went out in 1.3.0.
This is a bugfix release for a regression that inadvertently went out in 1.3.0.
inherit_path allows 'prefer', 'fallback', 'false'
Change PEX re-exec variable from ENV to os.environ
Bugfix for entry point targeting + integration test
Add interpreter constraints option and use constraints to search for compatible interpreters at exec time
Fix handling of pre-release option.
Create --pex-path argument for pex cli and load pex path into pex-info metadata
--pex-path argument for pex cli and load pex path into
pex-info metadata (#417)Leverage subprocess32 when available.
subprocess32 when available. (#411)Allow passing a preamble file to the CLI
Add first-class support for multi-interpreter and multi-platform pex construction.
Minimum setuptools version should be 20.3
Sort keys in PEX-INFO file so the output is deterministic.
Fix for Ambiguous Resolvable bug in transitive dependency resolution
This release follows-up on 1.2.0 fixing bugs in the pre-release resolving code paths.
This release follows-up on 1.2.0 fixing bugs in the pre-release resolving code paths.
Fix bug in cached dependency resolution with exact resolvable.
Follow redirects on HTTP requests
* Fix CacheControl import.
This release is a quick fix for a bootstrapping bug that inadvertently went out in 1.2.0 (Issue #354).
This release is a quick fix for a bootstrapping bug that inadvertently went out in 1.2.0 (Issue #354).
packaging dependency is self-contained. (#355)This release changes pex requirement resolution behavior. Only stable requirements are resolved by default now. The previous behavior that included pr
This release changes pex requirement resolution behavior. Only stable
requirements are resolved by default now. The previous behavior that
included pre-releases can be retained by passing --pre on the pex
command line or passing allow_prereleases=True via the API.
Add dummy flush method for clean interpreter exit with python3.6
Make sure namespace packages (e.g. virtualenvwrapper) don't break pex
--constraints in pex (#335)Check for scripts directory in get_script_from_egg
Make PEX_PATH unify pex sources, as well as requirements.
Adjust FileFinder import to work with Python 3.6.
Fix #309 by de-duplicating output of the distribution finder.
>0.26.0. (#304)Repair Executor error handling for other classes of IOError/OSError.
--pex-args. (#285)--inherit-path. (#284)Repair passing of stdio kwargs to PEX.run().
PEX.run(). (#288)Fix bdist_pex interpreter cache directory.
Your coding agent can read these notes before it upgrades. Set up the MCP server →