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 today
02 Oct 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
509 releases · first in 2014
Fix bdist_pex interpreter cache directory.
Update cache dir when bdist_pex.run is called directly.
bdist_pex.run is called directly.One column per quarter.
Improve failure modes for os.rename() as used in distribution caching.
Bugfix: Open setup.py in binary mode.
Bugfix: Repair a regression in --disable-cache.
--disable-cache.Add README and supported python versions to PyPI description.
open with utf-8 support.--pex-root option.This release is a quick fix for a regression that inadvertently went out in 1.1.5 (Issue #243).
This release is a quick fix for a regression that inadvertently went out in 1.1.5 (Issue #243).
bdist_pex setuptools command to work for python2.setuptools and wheel.Fix PEXBuilder.clone and thus bdist_pex --pex-args for --python and --python-shebang.
PEXBuilder.clone and thus bdist_pex --pex-args for
--python and --python-shebang.pkg_resources egg version normalization.inherit_path handling.This release is a quick fix for a regression that inadvertently went out in 1.1.3 (Issue #216).
This release is a quick fix for a regression that inadvertently went out in 1.1.3 (Issue #216).
FixedEggMetadata._zipinfo_name
and revert the breaking commit.This release includes an initial body of work towards Windows support, ABI tag support for CPython 2.x and a fix for version number normalization.
This release includes an initial body of work towards Windows support, ABI tag support for CPython 2.x and a fix for version number normalization.
Bump setuptools & wheel version pinning.
Fix infinite recursion when PEX_PYTHON points at a symlink.
PEX_PYTHON points at a symlink./etc/pexrc to the list of pexrc locations to check.Add support for .pexrc files for influencing the pex environment. See the notes here.
.pexrc files for influencing the pex environment.
See the notes here.bdist_pex command to setuptools.ResolvableSet, so
it was possible to depend on sphinx and Sphinx-1.4a0.tar.gz and
get two versions build and included into the pex.Bug fix: Accommodate OSX Python python binaries. Previously the OSX python distributions shipped with OSX, XCode and available via https://www.python.
Python python binaries. Previously the
OSX python distributions shipped with OSX, XCode and available via
https://www.python.org/downloads/ could fail to be detected using
the PythonInterpreter class. Fixessys.exit called without arguments would cause
None to be printed on stderr since pex 1.0.1.Bug fix: PEX-INFO values were overridden by environment Variables with default values that were not explicitly set in the environment. Fixes #135.
Variables
with default values that were not explicitly set in the environment.
Fixes #135.sys.modules after
PEX.execute. This takes all modules imported during the PEX
lifecycle and sets all their attributes to None. Unfortunately,
sys.excepthook, atexit and __del__ may still try to operate
using these tainted modules, causing exceptions on interpreter
teardown. This reverts just the sys un-patching so that the
above-mentioned teardown hooks behave more predictably.Allow PEXBuilder to optionally copy files into the PEX environment instead of hard-linking them.
The 1.0.0 release of pex introduces a few breaking changes: pex -r now takes requirements.txt files instead of requirement specs, pex -s has now been…
The 1.0.0 release of pex introduces a few breaking changes: pex -r now
takes requirements.txt files instead of requirement specs, pex -s has
now been removed since source specs are accepted as arguments, and
pex -p has been removed in favor of its alias pex -o.
The pex command line interface now adheres to semver insofar as backwards incompatible CLI changes will invoke a major version change. Any backwards incompatible changes to the PEX environment variable semantics will also result in a major version change. The pex API adheres to semver insofar as backwards incompatible API changes will invoke minor version changes.
For users of the PEX API, it is recommended to add minor version ranges,
e.g. pex>=1.0,<1.1. For users of the PEX CLI, major version ranges
such as pex>=1,<2 should be sufficient.
-s option in favor of specifying
directories directly as arguments to the pex command line.pex -r now takes requirements.txt filenames and
not requirement specs. Requirement specs are now passed as
arguments to the pex tool. Use -- to escape command line arguments
passed to interpreters spawned by pex.--no-index, -f, --find-links, --index-url,
--no-use-wheel. Removes -p in favor of -o exclusively.--python-shebang option to the pex tool in order to set the
#! shebang to an exact path.PEX_PYTHON environment variable which will cause
the pex file to re-invoke itself using the interpreter specified,
e.g. PEX_PYTHON=python3.4 or
PEX_PYTHON=/exact/path/to/interpreter.PEX_PATH environment variable which allows
merging of PEX environments at runtime. This can be used to inject
plugins or entry_points or modules from one PEX into another
without explicitly building them together.PEX_ environment variables and adds
the --help-variables option to the pex client.-m and --entry-point alias to the existing -e option for
entry points in the pex tool to evoke the similarity to python -m.-c/--script/--console-script and
PEX_SCRIPT. This allows you to reference the named entry point
instead of the exact module:name pair. Also supports scripts
defined in the scripts section of setup.py.PEX_COVERAGE and PEX_PROFILE did not function correctly
when SystemExit was raised.Nothing published for this version
Nothing published for this version
This is the last release before the 1.0.0 development branch is started.
This is the last release before the 1.0.0 development branch is started.
>=2.2,<16 by handling EntryPoint
changes as well as being flexible on whether pkg_resources is a
package or a module.pip install pex work better by removing
extras_requires on the console_script entry point.pex tool. If the
user does not explicitly disable the wheel feature and attempts to
build a pex with wheels but does not have the wheel package
installed, pex will download it in order to make the feature work.Bug fix: Honor installed sys.excepthook in pex teardown.
UrllibContext used replace as a keyword argument for
bytes.decode but this only works on Python 3.Bug fix: Fixup string formatting in pex/bin/pex.py to support Python 2.6
Performance improvement: Speed up the best-case scenario of dependency resolution.
uuid4().get_hex() to uuid4().hex to
maintain Python3 compatibility of pex.common.Performance improvement: Don't always write packages to disk if they've already been cached. This can significantly speed up launching PEX files with
Bug fix: Allow pex 0.8.x to parse pex files produced by earlier versions of pex and twitter.common.python.
Bug fix: Fix issue where it'd be possible to os.path.getmtime on a remote Link object
os.path.getmtime on
a remote Link object*API change*: Decouple translation from package iteration. This removes the Obtainer construct entirely, which likely means if you're using PEX as a l
resolve but simplifies the story around how to cache packages.Tracer to TraceLogger to prevent nondeterministic isort
ordering.--version correct.sys.modules scrubbing for namespace
packages. Under certain circumstances, namespace packages in
site-packages could conflict with packages within a PEX, causing
them to fail importing.os.unsetenv(...) with
del os.environ[...]sys.path and sys.modules based upon both supplied
path and realpath of files and directories. Newer versions of
virtualenv on Linux symlink site-packages which caused those
packages to not be removed from sys.path correctly.content method to HTTP contexts that does HTML
content decoding, fixing an encoding issue only experienced when
using Python 3.Rename twitter.common.python to pex and split out from the twitter/commons repo.
twitter.common.python to pex and split out from the
twitter/commons repo.Initial published version of twitter.common.python.
twitter.common.python.Your coding agent can read these notes before it upgrades. Set up the MCP server →