freshcrate

pex

The PEX packaging toolchain.

Description

*** PEX *** .. image:: https://github.com/pex-tool/pex/actions/workflows/ci.yml/badge.svg?branch=main :target: https://github.com/pex-tool/pex/actions?query=branch%3Amain+workflow%3ACI .. image:: https://img.shields.io/pypi/l/pex.svg :target: https://pypi.org/project/pex/ .. image:: https://img.shields.io/pypi/v/pex.svg :target: https://pypi.org/project/pex/ .. image:: https://img.shields.io/pypi/pyversions/pex.svg :target: https://pypi.org/project/pex/ .. image:: https://img.shields.io/pypi/wheel/pex.svg :target: https://pypi.org/project/pex/#files .. image:: https://img.shields.io/discord/1205942638763573358 :target: https://pex-tool.org/discord .. contents:: **Contents** Overview ======== pex is a library for generating .pex (Python EXecutable) files which are executable Python environments in the spirit of `virtualenvs <https://virtualenv.pypa.io>`_. pex is an expansion upon the ideas outlined in `PEP 441 <https://peps.python.org/pep-0441/>`_ and makes the deployment of Python applications as simple as ``cp``. pex files may even include multiple platform-specific Python distributions, meaning that a single pex file can be portable across Linux and OS X. pex files can be built using the ``pex`` tool. Build systems such as `Pants <http://pantsbuild.org/>`_, `Buck <http://facebook.github.io/buck/>`_, and `{py}gradle <https://github.com/linkedin/pygradle>`_ also support building .pex files directly. Still unsure about what pex does or how it works? Watch this quick lightning talk: `WTF is PEX? <https://www.youtube.com/watch?v=NmpnGhRwsu0>`_. pex is licensed under the Apache2 license. Installation ============ To install pex, simply .. code-block:: bash $ pip install pex You can also build pex in a git clone using uv: .. code-block:: bash $ uv run dev-cmd package $ cp dist/pex ~/bin This builds a pex binary in ``dist/pex`` that can be copied onto your ``$PATH``. The advantage to this approach is that it keeps your Python environment as empty as possible and is more in-line with what pex does philosophically. Simple Examples =============== Launch an interpreter with ``requests``, ``flask`` and ``psutil`` in the environment: .. code-block:: bash $ pex requests flask 'psutil>2,<3' Save Dependencies From Pip ~~~~~~~~~~~~~~~~~~~~~~~~~~ Or instead freeze your current virtualenv via requirements.txt and execute it anywhere: .. code-block:: bash $ pex $(pip freeze) -o my_virtualenv.pex $ deactivate $ ./my_virtualenv.pex Ephemeral Environments ~~~~~~~~~~~~~~~~~~~~~~ Run webserver.py in an environment containing ``flask`` as a quick way to experiment: .. code-block:: bash $ pex flask -- webserver.py Launch Sphinx in an ephemeral pex environment using the Sphinx entry point ``sphinx:main``: .. code-block:: bash $ pex sphinx -e sphinx:main -- --help Using Entry Points ~~~~~~~~~~~~~~~~~~ Projects specifying a ``console_scripts`` entry point in their configuration can build standalone executables for those entry points. To build a standalone ``pex-tools-executable.pex`` binary that runs the ``pex-tools`` console script found in all pex version ``2.1.35`` and newer distributions: .. code-block:: bash $ pex "pex>=2.1.35" --console-script pex-tools --output-file pex-tools-executable.pex Specifying A Specific Interpreter ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ You can also build pex files that use a specific interpreter type: .. code-block:: bash $ pex "pex>=2.1.35" -c pex-tools --python=pypy -o pex-tools-pypy-executable.pex Most pex options compose well with one another, so the above commands can be mixed and matched, and equivalent short options are available. For a full list of options, just type ``pex --help``. Documentation ============= More documentation about Pex, building .pex files, and how .pex files work is available at https://docs.pex-tool.org. Development =========== Pex uses `uv <https://docs.astral.sh/uv/>`_ with `dev-cmd <https://pypi.org/project/dev-cmd/>`_ for test and development automation. After you have installed `uv`, to run the Pex test suite, just run `dev-cmd` via `uv`: .. code-block:: bash $ uv run dev-cmd The `dev-cmd` command runner provides many useful options, explained at https://pypi.org/project/dev-cmd/ . Below, we provide some of the most commonly used commands when working on Pex, but the docs are worth acquainting yourself with to better understand how `dev-cmd` works and how to execute more advanced work flows. To run a specific command, identify the name of the command you'd like to invoke by running ``uv run dev-cmd --list``, then invoke the command by name like this: .. code-block:: $ uv run dev-cmd format That's a fair bit of typing. An shell alias is recommended, and the standard is `uvrc` which I'll use from here on out. To run MyPy: .. code-block:: $ uvrc typecheck All of our tests allow passthrough arguments to `pytest`, which can be helpful to

Release History

VersionChangesUrgencyDate
2.92.3Imported from PyPI (2.92.3)Low4/21/2026
v2.92.3--- ## 2.92.3 This release fixes universal lock splits that use extra markers not directly related to `--style universal` target systems or `--interpreter-constraints`. Previously these triggered an internal exception. That bug is now fixed and the scope of manually induced splits is now broadened to include extra markers when used alone. * Fix universal lock splitting for extra markers. (#3150) *** |file|sha256|size| |----|------|----| |pex|925d08cc9ffe5cff5a3dd67519e24bdb42b1257814bcae7355bHigh4/15/2026
v2.92.2--- ## 2.92.2 This release fixes `pex3 lock create --avoid-downloads` hashing of VCS requirements where the VCS repository contains symlinks. Previously the hash calculated at lock create time would always mismatch the hash calculated at lock use time. * Fix VCS hashing in the face of symlinks. (#3149) *** |file|sha256|size| |----|------|----| |pex|5ccaf151161debe5381d767c7631b39d5516c7106e725c45dbae24aa0e5fe569|5081502| |pex-linux-aarch64|607212acc44274dfcf8f76d3cb447cecc50687dd8ab3b80430408High4/15/2026
v2.92.1--- ## 2.92.1 This release fixes a caching bug introduced in #2766 that led to sdists always being rebuilt when needed for a PEX. * Always cache sdist builds. (#3144) *** |file|sha256|size| |----|------|----| |pex|116da6936a81563ee2f1bafb221666b77617caec9ec82e38269d5e31784b932d|5081477| |pex-linux-aarch64|720a065139d0278929b57632a4eff0ec987dc5087d719cf855b90a4a99f74406|36838250| |pex-linux-armv7l|dd833d906216dfd1015676ccaf2723052015c13065f598262de315504bf55af1|33221752| |pex-linux-riscv64|82cMedium4/6/2026
v2.92.0--- ## 2.92.0 This release supports Pip's new [`--uploaded-prior-to`](https://pip.pypa.io/en/stable/user_guide/#filtering-by-upload-time). * Support `--uploaded-prior-to` for Pip v26.0 and newer. (#3131) *** |file|sha256|size| |----|------|----| |pex|fc49e0705c2e72f56d41e6139ca95b4e3f942fe92211c51a80c3fc2dfd19cd8d|5080952| |pex-linux-aarch64|a6ca5937cb309917368646ac632fa0a362d7021cde59a41c9f42d115e48ecdac|36837722| |pex-linux-armv7l|5d884e5dbbd79ba89b871787d5e4155deaceaaedf65be5790d060ba9d5deMedium4/2/2026
v2.91.8--- ## 2.91.8 This release fixes handling of `--pylock <relative path>` when the lock contains local project dependencies specified via relative path in the lock file. * Fix `--pylock` relative path handling. (#3140) *** |file|sha256|size| |----|------|----| |pex|b0a1695114061292f9b337da4325d5c78613ec18c6560c0d76493e1fe81a1013|5080379| |pex-linux-aarch64|44a0707e05eb731e9ed94a343e7c09749898e7289d7d1afdd97ee017fbe2c6f3|36837153| |pex-linux-armv7l|cba73b9f1af8b7fb42be02864e075141eaf5754f55ab5e1Medium3/31/2026
v2.91.7--- ## 2.91.7 This release plugs holes in the WHEEL metadata fix in 2.91.6. * Thread .whl name / platform tag to Wheel parse. (#3137) *** |file|sha256|size| |----|------|----| |pex|7bb032815401788789c46b498d705b730a4b52736558fc6b11e3593e7ee23d2c|5080310| |pex-linux-aarch64|d09588c4b2d6d2efb4a764d6b3d91a618e8e7c1e3b719be2935b103e577dde4f|36837080| |pex-linux-armv7l|4e7dea7cea736a5d16907be48154b207dce2eeeae1be7a3275cf97aaecac3ecb|33220584| |pex-linux-riscv64|9883f036cb5e366807dd0725cc214097e089Medium3/31/2026
v2.91.6--- ## 2.91.6 This release fixes a crash when encountering empty compatibility tag strings in WHEEL metadata, which are not valid, but are nonetheless found in the wild. * Defend against empty `Tag`s in WHEEL metadata. (#3133) *** |file|sha256|size| |----|------|----| |pex|7ad93771823900012ecd5386ed00cc4a15393ef76a76c410853708f9f91abecd|5079012| |pex-linux-aarch64|22ba63bcd3ada6a4ba6c8266c20e1210880554ce4b76a605a55819075afcb1f9|36835790| |pex-linux-armv7l|56469659174674817b57d66cf205c5df22af5Medium3/30/2026
v2.91.5--- ## 2.91.5 This release fixes Pex PEX scie behavior to match Pex. * Make ephemeral exec, venv repl and scie compatible (#3129) *** |file|sha256|size| |----|------|----| |pex|5a7e49fb16cb7b0c15efacc56673fb1e36e79f1b4b0f89e3a3d50eb335e7f30e|5078817| |pex-linux-aarch64|9ea0df38426af7de9d47bfac0bb1ac81a3cfa12e95be96b4716476f6f333a998|36835584| |pex-linux-armv7l|62e8844c7cce889a6df97a33cb394b937153671ef394d7cfc151d3a5120733a4|33219086| |pex-linux-riscv64|34782cc47f4ccc4e9e960b6541e8df4412be916fMedium3/26/2026
v2.91.4--- ## 2.91.4 This release brings 2 performance fixes from @tobni: 1. An extremely inefficient algorithm used when resolving requirements with many extras from a PEX was replaced with a simpler, faster and easier to understand algorithm. 2. Cold-cache `--venv` PEX layout times are nearly halved for large PEXes. * Fix exponential memory from powerset of requirement extras. (#3123) * Hoist realpath calls out of per-file loop in `install_wheel`. (#3124) *** |file|sha256|size| |----|------|----| Medium3/24/2026
v2.91.3--- ## 2.91.3 This release fixes extraction of wheels containing entries with bad permissions. Instead of preserving zip entry permissions, just the executable bit is preserved for file entries. * Extract zip files with current default fs permission. (#3119) *** |file|sha256|size| |----|------|----| |pex|b35dcc477b3984311cf871e0ad8b46e88edcc68c43a7174f17ea153a84dfc5cc|4992866| |pex-linux-aarch64|2127a7d9d6952de5ab6dabb23f1cb04413de9b83bf0c6e4fb65d7e524dc42d8f|36749644| |pex-linux-armv7l|764cbLow3/22/2026
v2.91.2--- ## 2.91.2 This release fixes hermeticity of the Pex boot code against the Python stdlib itself. In some corner cases stdlib modules could be loaded from the PYTHONPATH and lead to failure of the Pex boot code before reaching its `sys.path` scrubbing code. * Harden `__main__.py` against non-hermetic stdlib. (#3117) *** |file|sha256|size| |----|------|----| |pex|0aa2f9100c6775d7f6b1db1658d0c70a9f62d17e4cc7d1301df3e8fa364a1034|4992632| |pex-linux-aarch64|ef6e2d7fceab7ab2f47ea73242fc96d209ac1Low3/15/2026
v2.91.1--- ## 2.91.1 This release partially fixes an interpreter caching bug for CPython interpreters that have the same binary contents across patch versions with variance confined to `libpython`, other shared libraries and stdlib code. * Fix identification of venv interpreters. (#3114) *** |file|sha256|size| |----|------|----| |pex|a8da0b7fa9c1bc65866b8a5699859b42ecd0e437e6085bcee20a20619e3092d6|5076230| |pex-linux-aarch64|9f6f4dd0d6e321180bf47e41c8cacffd1ff636c993194be216b72c7a4adbfe3a|36833004| Low3/10/2026
v2.91.0--- ## 2.91.0 This release improves editable support by honoring editable requests when creating venvs from resolves. * Honor `-e ...` when creating venvs from resolves. (#3112) *** |file|sha256|size| |----|------|----| |pex|7d6c0636305d957e7c08303a3e40d447b29fb05b468d2c0d2f93d8d46036e8af|5075587| |pex-linux-aarch64|8a40a1173aacf66ca4223a3ca3ac036bb8d52be8f25bf977b58d326b6744af8c|36832357| |pex-linux-armv7l|f7cf957a1f702d192beb5394f2de27295a9ee980e172c647ea21ae4bf8c1a774|33215865| |pex-linux-Low3/10/2026
v2.90.3--- ## 2.90.3 This release follows up on #3109 in 2.90.2 and extends better isolation to `--venv` script shebangs when emitting hermetic scripts (the default; only subverted by `--non-hermetic-venv-scripts`). * Use more isolation in venv scripts when available. (#3110) *** |file|sha256|size| |----|------|----| |pex|ae4eb0b40a720988164589aac94f30d3d3ec2fb31fab1b3b5073ae2afc9f1b4a|5070060| |pex-linux-aarch64|0a6d171601d9f5cdd17d674abb45255bc5ec2393a90f9a02d70d6f5aba2e1ac0|36826846| |pex-linux-aLow3/1/2026
v2.90.2--- ## 2.90.2 This release fixes bugs resulting from imperfect isolation of Python interpreters by Pex. In particular, `sys.path` pollution from items in the `CWD` is mitigated for many common use cases. This release also updates vendored Pip's vendored certifi's cacert.pem to that from certifi 2026.2.25. * Update vendored Pip's CA cert bundle. (#3108) * Further isolate Python interpreters when possible. (#3109) *** |file|sha256|size| |----|------|----| |pex|311d8eb35ad3d64e1c508b7e7ac3479e1Low2/26/2026
v2.90.1--- ## 2.90.1 This release fixes a Pex caching bug when creating `--layout packed` PEXes and alternating between the default (`--compress`) and `--no-compress`. Previously this could lead errors building the packed PEX which necessitated clearing the PEX cache. * Fix `--layout packed` bootstrap and wheel caches. (#3106) *** |file|sha256|size| |----|------|----| |pex|558c4761e691acef985c8b2b93c6f370833cd915406dad656adc2f23d1a364c9|5068607| |pex-linux-aarch64|51ca5240605b253390bfdc78dc19b7cb28dLow2/17/2026
v2.90.0--- ## 2.90.0 This release adds support for wrapping PEP-660 `build_editable` to `pex_build.setuptools.build` plugins and dogfoods this. * Support wrapping `build_editable` in wrap. (#3105) *** |file|sha256|size| |----|------|----| |pex|b867a42d6323bee22d5fe3141ce403aab72620a4a5183284e226c5305ca87aa4|5068520| |pex-linux-aarch64|d965642ad830540f43c9cb2d4df06fb621681cf3ab41fe14daa248d308312e8b|36825071| |pex-linux-armv7l|11c53a4f824ca7464f86bf5cfcc852c842cdfa1d170c9d9af8972e8fc34a3e62|33208578|Low2/15/2026
v2.89.1--- ## 2.89.1 This release adds better diagnostics for certain Pex filesystem interaction errors. * Add `safe_copy` failure diagnostic message. (#3103) *** |file|sha256|size| |----|------|----| |pex|78c932703807b4eac73baf3680c445d290ec5f04e88a141e7ff85b96da8a041d|4982477| |pex-linux-aarch64|f37eb2f28e4d0460ca8678d85f34b5ff6c69f1251c69b7d30cfb687d7e62e13a|36739035| |pex-linux-armv7l|7ffdcf602983f7be20815c7d11eeff2e358a8f240bf41655395d35b9a823ed4b|33122533| |pex-linux-riscv64|8bb6e4b71d4bd30e1dLow2/14/2026
v2.89.0--- ## 2.89.0 This release exports the path of the installed `.desktop` file as the `DESKTOP_FILE` environment variable for commands in `--scie-icon` and `--scie-desktop-file` PEX scies. The `DESKTOP_FILE` path may not exist, but if it does it can be used to implement desktop application uninstallation in the PEX scie application code. * Export `DESKTOP_FILE` for PEX scie .desktop apps. (#3100) *** |file|sha256|size| |----|------|----| |pex|3d717550b83c4476a76787e274a9fe7322e7543de3c4ea8adf7cLow2/9/2026
v2.88.1--- ## 2.88.1 This release fixes `.desktop` files installed by `--scie-icon` and `--scie-desktop-file` PEX scies to be more robust. They now work even if the original PEX scie they were installed by is (re)moved as well as properly handling a `SCIE_BASE` with spaces in the path. * Fix `.desktop` files installed by PEX scies. (#3099) *** |file|sha256|size| |----|------|----| |pex|680653e13f5a148f7cdad971b734f5a5f947804fe3680057856dd1ba4f30e98c|4981477| |pex-linux-aarch64|9e715cfd29e495ccefee87Low2/7/2026
v2.88.0--- ## 2.88.0 This release adds support for `--pip-version 26.0.1`. * Add support for `--pip-version 26.0.1`. (#3098) *** |file|sha256|size| |----|------|----| |pex|4adc09ff34a21b264fe078747ba3912ba9d95a6d8c219ba2c51e55a86bb95a04|4981166| |pex-linux-aarch64|4836f9081dc256119925acf4092c2c5ac1baf676564c736c6fdd9a5e4f59c682|36607919| |pex-linux-armv7l|c8082b42468b0351a41bfca21e31b68be597391563c625877febb6c15c904d46|32958667| |pex-linux-riscv64|130827ce738195696ac05e2cbeac01830bff6029a276d854de3bLow2/5/2026
v2.87.0--- ## 2.87.0 This release adds support for `--pip-version 26.0`. * Add support for `--pip-version 26.0`. (#3091) *** |file|sha256|size| |----|------|----| |pex|5512aa085081cb90ae399a5190f2d7029225d39e0911d81d1e07b3060dc1536b|4981159| |pex-linux-aarch64|c11d3d424f438cee46bd82fc714d1aea2cafa88f5d27cec1187cee501c974ad2|36607905| |pex-linux-armv7l|1d6feacd251da125e77726ce5772eb53071949e3dc60189cbde7dec772717aaf|32958656| |pex-linux-riscv64|a984976d1b614a5d5d4f6e1b425e2bd8183720422711ecfda1843210Low1/31/2026
v2.86.1--- ## 2.86.1 This release fixes a bug in constraints file requirement parsing. Previously, Pex tried to validate constraints beyond its own needs, anticipating Pip's needs, leading to a failure to handle direct reference URL requirements, including VCS requirements. * Fix constraints file parsing for URL requirements. (#3090) *** |file|sha256|size| |----|------|----| |pex|91280d0a44c432630a8a80e43a51fcd9beb17acf93b4639ea903ff0330d371bc|4981147| |pex-linux-aarch64|e948a57ba1453f39ea3ba6d565ecLow1/28/2026
v2.86.0--- ## 2.86.0 This release adds support for Linux PEX scies installing themselves with a desktop entry on first run. This is enabled via either of `--scie-icon` or `--scie-desktop-file`. By default, the end-user is prompted to approve a desktop install but this can be bypassed at build time with `--no-scie-prompt-desktop-install` or at runtime using the `PEX_DESKTOP_INSTALL` environment variable. * Add PEX scie Linux .desktop install support. (#3087) *** |file|sha256|size| |----|------|----| Low1/26/2026
v2.85.3--- ## 2.85.3 This release upgrades vendored `packaging` for Python>=3.8 to the latest release; bringing some bug fixes and performance improvements. * Upgrade vendored `packaging` to 26.0 for Python>=3.8. (#3083) *** |file|sha256|size| |----|------|----| |pex|257714ed97a38e76ba10423be4f2c2ff2a5a30207d339cfd49f5ba45284e16aa|4976252| |pex-linux-aarch64|1d03a7d71f4ddb77c59608e9f51ea2f251fd831cd9b81703ad4e3e50829cb0be|36602518| |pex-linux-armv7l|faefcdb06a953a90a1b682414a985ed417771Low1/22/2026
v2.85.2--- ## 2.85.2 This release makes running a PEX using venv-execution and sh-bootstrapping (that is, build with `--sh-boot --venv`) more likely to behave identically with a cold or warm `PEX_ROOT` cache. This includes running with `PEX_PYTHON=...`, `PEX_PYTHON_PATH=...`, `PEX_PATH=...`, `PEX_VENV=...` and `PEX_IGNORE_RCFILES=...`. * Avoid fast-path in `--sh-boot` script for more variables. (#2729) *** |file|sha256|size| |----|------|----| |pex|655792124190a68849e7165f93712406982475ee6ab3cd9bc9Low1/21/2026
v2.85.1--- ## 2.85.1 This release upgrades the floor of `science` to 0.17.2 to pick up better handling for CPython 3.9 which was dropped in new [PBS](https://github.com/astral-sh/python-build-standalone) releases at the end of 2025. * Upgrade science to 0.17.2 (#3081) *** |file|sha256|size| |----|------|----| |pex|8e0bbc85e382548998d97c4e487986a7ecd9271d3f204307e03bb02fa80a1ddf|4958735| |pex-linux-aarch64|a92ea6f1ceca17fabde49f79616b3696f65cd06954c6661f7af32b91c09077f0|36584993| |pex-linux-armv7l|c5Low1/21/2026
v2.85.0--- ## 2.85.0 This release introduces a new `--interpreter-selection-strategy` option for use when building PEXes that use `--interpreter-constraint`s. When multiple interpreters satisfy the specified `--interpreter-constraint`s, the `--interpreter-selection-strategy` allows you to direct Pex to select the `oldest` (the default and the existing behavior) or the `newest`. In either case, the highest available patch version will be selected from amongst multiple interpeters with the same major aLow1/21/2026
v2.84.0--- ## 2.84.0 This release causes `pex ...` to emit the output path of the generated PEX (and / or scies) on STDOUT. If `--seed verbose` is set, then the output path of the PEX is included in the new `"seeded_from"` field. * Emit PEX output path to stdout. (#3079) *** |file|sha256|size| |----|------|----| |pex|17b03a152ab9c3c345b910b1770336066454ef5baab5e1f386dfe0244b849426|4956352| |pex-linux-aarch64|16168c6af4326fa069bd1fbb85b7e4faf1015ffa8ea45952024d23619db84299|36582614| |pex-linux-armv7lLow1/20/2026
v2.83.0--- ## 2.83.0 This release adds support for templating `{platform}` in PEX file names. When this substitution token is found, it is replaced with the most specific platform tag(s) of wheels in the PEX. For example: ```console :; python -mpex ansicolors -o "ansicolors-{platform}.pex" :; ./ansicolors-py2.py3-none-any.pex Pex 2.83.0 hermetic environment with 1 requirement and 1 activated distribution. Python 3.14.2 (main, Dec 5 2025, 14:39:48) [GCC 15.2.0] on linux Type "help", "peLow1/19/2026
v2.82.1--- ## 2.82.1 This release fixes `pex3 scie create --dest-dir` to work when the specified PEX is a local file path. Previously `--dest-dir` only worked when the specified PEX was an URL. * Fix `pex3 scie create --dest-dir` handling. (#3076) *** |file|sha256|size| |----|------|----| |pex|8837335d3a0967e983416b25d8686501860393e3f7aa9c36f9389c02d4abc165|4955662| |pex-linux-aarch64|48bbbccb931cbe5c3b72c1cf50e2e17019fbf7ddeb27cbea096971fcf90065da|36581919| |pex-linux-armv7l|85eb3136c35ec1280c8b780Low1/16/2026
v2.82.0--- ## 2.82.0 This release adds support for resource path bindings to plain PEXes as a follow-on to adding resource binding support for PEX scies in the 2.81.0 release. Resource paths are bound to environment variables with `--bind-resource-path`. Additionally, the existing `--inject-args` option now supports replacement of `{pex.env.<env var name>}` placeholders with the corresponding environment variable value. Notably, the combination of these features allows passing the paths of files contLow1/15/2026
v2.81.0--- ## 2.81.0 This release adds the ability to set a custom scie entrypoint for PEX scies using `--scie-exe`, `--scie-args` and `--scie-env`, as well as bind resource paths to environment variables using `--scie-bind-resource-path`. The combination of these new features allows broad flexibility defining a PEX scie's boot command. Additionally, the `pex3 scie create` command gains the ability to use a URL for the PEX to convert to a scie and optionally specify a size (via `#size=<expected sizeLow1/15/2026
v2.80.0--- ## 2.80.0 This release adds the `pex3 scie create` tool for creating scies from existing PEX files. This works for PEXes created by Pex 2.1.25 (released on January 21st, 2021) and newer. * Add a `pex3 scie create` command. (#3070) *** |file|sha256|size| |----|------|----| |pex|75a4fdeabc8a0caf8f630e849a91014bb4de894804944ea5eb1eee6a8cfe25d8|4942767| |pex-linux-aarch64|739ea2cb188016dbc14dfd721b10467bab821679c3f1a7961cc843f276ec9ab2|36566234| |pex-linux-armv7l|d19e9fad74395e785e10f4c837dbcLow1/14/2026
v2.79.0--- ## 2.79.0 This release adds the `CPython[free-threaded]` alias for `CPython+t` and the `CPython[gil]` alias for `CPython-t` when writing interpreter constraints. * Add `CPython[{free-threaded,gil}]` aliases for `CPython{+,-}t`. (#3068) *** |file|sha256|size| |----|------|----| |pex|f7a50bfb31c2304f4b30ef6eabb623c86abae0b5841dc3d8a147afd1568ecd4e|4940234| |pex-linux-aarch64|066a968158b7c67508cce1f123ab0899829b2f5031e0960607f0f5473b6070c0|36564456| |pex-linux-armv7l|d7270cb4caaLow1/12/2026
v2.78.0--- ## 2.78.0 ## This release adds support for the `CPython+t` implementation name in interpreter constraints to allow constraining selected interpreters to CPython interpreters built with free-threading support. The existing `CPython` implementation selects from either classic GIL enabled `CPython` interpreters or CPython free-threaded interpreters as was the case previously. The `CPython-t` implementation name can be used to require classic GIL-only CPython interpreters. * Support `CPython+tLow1/12/2026
v2.77.3--- ## 2.77.3 This release updates vendored Pip's vendored certifi's cacert.pem to that from certifi 2026.1.4. * Update vendored Pip's CA cert bundle. (#3065) *** |file|sha256|size| |----|------|----| |pex|24f13372b9d2806a2fa12ed5cbd698fbf463a25a61ba754ce33aa608231fccbe|4938142| |pex-linux-aarch64|7df37ff9d7a59931dba87271f9731dad635983dd17cfb0589b40ad2bcecbed95|36562369| |pex-linux-armv7l|9880e00cf3077bdb94b203007d727055372f8cfb7acd1eeb88c245f7282894ae|32888413| |pex-linux-riscv64|14464cab8d4Low1/9/2026
v2.77.2--- ## 2.77.2 This release fixes venv creation from PEXes to avoid declaring false collisions in `__init__.py` files when the venv uses Python 3.9 or greater. * Compare ASTs of colliding venv `__init__.py`. (#3063) *** |file|sha256|size| |----|------|----| |pex|e45bc2336bda18cb0681f24b7299350d9b62b91168e43e5dca8a7547be989334|4944568| |pex-linux-aarch64|d991fae010dc45ae77022f524e2dc9e0f150de9dd9475698a1df9f7bdd26d380|36568781| |pex-linux-armv7l|c03c5f0be53c49213288c4878198a918afdb6afe56f428b73Low1/8/2026
v2.77.1--- ## 2.77.1 This release fixes a very old bug where the Pex PEX (or any other PEX created with `--no-strip-pex-env`) would, in fact, strip `PEX_PYTHON` and `PEX_PYTHON_PATH`. * Fix `PEX_PYTHON{,_PATH}` stripping on Pex re-exec. (#3061) *** |file|sha256|size| |----|------|----| |pex|7d80c62ba2119be318518298c0810c2b862a61fd7ce8ba29c811e5e72239569d|4944053| |pex-linux-aarch64|3278a65bea6facd4aef57aed28c1e89efdbf3afe8ec94b17d2d40d6b02288b1f|36568273| |pex-linux-armv7l|44193ac4f7fd0Low1/4/2026
v2.77.0--- ## 2.77.0 This release has no fixes or new features per-se, but just changes the set of distributions that Pex releases to PyPI. Previously Pex released an sdist and a universal (`py2.py3-none-any`) `.whl`. Pex now releases two wheels in addition to the sdist. The `py3.py312-none-any.whl` targets Python>=3.12 and has un-needed vendored libraries elided making it both a smaller `.whl` and less prone to false-positive security scan issues since unused vendored code is now omitted. ThLow1/2/2026
v2.76.1--- ## 2.76.1 This release fixes bootstrapping of Pips specified via `--pip-version` to respect Pex Pip configuration options (like custom indexes) under Python 3.12 and newer. * Fix Pip bootstrap to respect Pip config for Python >= 3.12. (#3054) *** |file|sha256|size| |----|------|----| |pex|57192b7cf4a870c8f2d6fd1fe8125fb02ca6a02c83328c6291debb54fc5cb3a2|4941852| |pex-linux-aarch64|a92cba14fc006df6141fc396241948e36d090f71af55f19ae520ad22506fa86c|36566066| |pex-linux-armv7l|4414ecfd825c23ecfLow12/27/2025
v2.76.0--- ## 2.76.0 This release adds support for `--no-scie-pex-entrypoint-env-passthrough` to trigger direct execution of `--venv` PEX scie script entrypoints. This performance optimization mirrors the existing default `--no-scie-busybox-pex-entrypoint-env-passthrough` for busybox scies, but must be selected by passing `--no-scie-pex-entrypoint-env-passthrough` explicitly. In addition, the `VIRTUAL_ENV` env var is now guaranteed to be set for all `--venv` PEX scies. * Add scie support for direct Low12/25/2025
v2.75.2--- ## 2.75.2 This release updates vendored Pip's vendored certifi's cacert.pem to that from certifi 2025.11.12. * Update vendored Pip's CA cert bundle. (#3052) *** |file|sha256|size| |----|------|----| |pex|0be30966943127d48d043125bb69065ffe59fc9e95b870c85dc0f0da596eafa8|4941011| |pex-linux-aarch64|7ea323a6ddf6e0b437be4a3b9a1c7aa99b1fd857d7c87ab5bf7aa4b537e1a8c7|36564941| |pex-linux-armv7l|2a7ed013bc06866f11d5f8c4eb4653a7df0ab8b035f4b7e28265b54f160d10d0|32890987| |pex-linux-riscv64|094713db2Low12/24/2025
v2.75.1--- ## 2.75.1 This release fixes Pex handling of wheels with bad RECORDs that record files that do not exist in the `.whl` file. * Warn when non-existent files in RECORD, but proceed. (#3051) *** |file|sha256|size| |----|------|----| |pex|053ae07f0980acb7003b516dcab8ae9393386cd4447abd4885b798162da64655|4944782| |pex-linux-aarch64|efb8b8a544ad0c91be0fb8084326358bfe722032b58d4f3052dd6e135ddbd08b|36568709| |pex-linux-armv7l|c510fa0dcf46266217374ccb9f61beeb710d7924cc53959ffe9c42500d80e34b|3289475Low12/23/2025
v2.75.0--- ## 2.75.0 This release adds supoort for `--scie-load-dotenv` to enable `.env` file loading in PEX scies. * Support scie-jump `.env` loading with `--scie-load-dotenv`. (#3046) *** |file|sha256|size| |----|------|----| |pex|0d892120121375d0e3a7c66c32e9fd60382cf0257d6b12e1cf83259da3e25a81|4944581| |pex-linux-aarch64|3426fe0b63db57163fa08aee37d1556afe009b32f749038b1d7d47f92075c379|36568506| |pex-linux-armv7l|0eca62dc995415e9d4191f21633cce26c7d67194e4360e004293cab7bd477f3c|32894548| |pex-linuxLow12/20/2025
v2.74.3--- ## 2.74.3 This release fixes a bug gracefully handling a request for `--validate-entry-point` when no `--entry-point` was given. * Error for missing entry point under `--validate-entry-point`. (#3048) *** |file|sha256|size| |----|------|----| |pex|d8c61c7185795f9ae1559ecea478f7c700659bf0fd38ec7f3eff4203c8036920|4944367| |pex-linux-aarch64|4092652561556ec88bdeab8bfb403be17ca466b6e6492d8112dc2022472ca70e|36568284| |pex-linux-armv7l|9154e282dbf560f201863b6a641a75ab9c0bd03dcf5064aafaa93ce0cf2Low12/20/2025
v2.74.2--- ## 2.74.2 This release fixes building PEXes from direct URL requirements. Previously, the direct URL requirement would be recorded incorrectly in PEX-INFO metadata leading to a failure to boot. * Fix `str(req)` of direct URLs with known versions. (#3043) *** |file|sha256|size| |----|------|----| |pex|0c5b85a7cdf2a78ede801ef8ace787d7b697b2d9ce6fccf1b70051c7cbf23bac|4943994| |pex-linux-aarch64|5580a5dd853ede161a8a79fb8689c93f6b17904a074ff1a494922f7d74e1648d|36567925| |pex-linux-armv7l|7ce0aLow12/16/2025
v2.74.1--- ## 2.74.1 This release upgrades the floor of `science` to 0.17.1 and `scie-jump` to 1.9.2 to fix a regression in the breadth of Linux platforms `--scie {eager,lazy}` PEX scies were compatible with. * Upgrade science to 0.17.1 & scie-jump to 1.9.2. (#3038) *** |file|sha256|size| |----|------|----| |pex|24d62a8297c53277614d26c2f8293276fdb1045274411a9018f04ad241f7c3ea|4943888| |pex-linux-aarch64|95ece239f5fe3708290d4fba10b4e9051f1f409fa9c3edc355adfe40dc5afde8|36567826| |pex-linux-armv7l|6b87Low12/6/2025
v2.74.0--- ## 2.74.0 This release adds support for setting custom PEX-INFO `build_properties` metadata via `--build-property`, `--build-properties` and `--record-git-state`. * Support custom PEX-INFO `build_properties`. (#3036) *** |file|sha256|size| |----|------|----| |pex|550a081ad9654435c18a83ef8f975af06543f0ea303b1181cfbaf0956a9cf22c|4943827| |pex-linux-aarch64|6f5ead1ff3322b94e5f0fdddd5173a12443d418fbc4cb7c5868e6347ab48a4f5|36694738| |pex-linux-armv7l|0a722f48a7a8ebce6945a4e9392ca461e4c03493835Low12/4/2025
v2.73.1--- ## 2.73.1 This release fixes `--lock` and `--pylock` subsetting of direct reference and VCS requirements. Previously, just the project name was matched when subsetting but now the normalized URL is matched. The previous behavior could lead to subsets succeeding that should have otherwise failed. The new behavior can lead to a subset failing when URLs differ, but both URLs point to the same content. Although this too is a bug, it should be a much narrower use case in the wild; so this shoulLow12/2/2025

Dependencies & License Audit

Loading dependencies...

Similar Packages

setuptoolsMost extensible Python build backend with support for C/C++ extension modules82.0.1
pre-commitA framework for managing and maintaining multi-language pre-commit hooks.v4.6.0
azure-core-tracing-opentelemetryMicrosoft Azure Azure Core OpenTelemetry plugin Library for Pythonazure-template_0.1.0b6187637
spdx-toolsSPDX parser and tools.0.8.5
lacesDjango components that know how to render themselves.0.1.2