Skip to content

Releases: pex-tool/pex

pex 2.86.1

28 Jan 17:27
v2.86.1
357064e

Choose a tag to compare


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 e948a57ba1453f39ea3ba6d565ec1221109a227ee7d92aef0c543b181098fe7f 36607893
pex-linux-armv7l 95aeedd3c355f3640fe982ae9f662abdd45f4f730b76ef8e6d5706833536a71a 32958640
pex-linux-riscv64 723970e67a472bc999961ea5f4105b266428db8a044182324a9fbdac03a472b6 33091720
pex-linux-x86_64 263b837d050c3f612e1bf2e395e4077adda9551df20598aed36a771fa0cbcfdc 42543067
pex-macos-aarch64 c2578632d995f94977161dc85e9353014f0a47c6bcf90d9bee39effeade67dd0 24457652
pex-macos-x86_64 f62e4dc1e1ca8a9d4a460b5e568095d0c24b688bbad1ac6835866bb67829e6c0 24621667
pex-musl-linux-aarch64 f53b4937a74fdf7be5484ee89b93e27aba5b8c65e7931dabab29f4d0f3c8e46b 35850086
pex-musl-linux-x86_64 7ab06c6b777d6ab68366b6404a87576b3faa10da7367ac76e5806fa9aacf9031 35955683

pex 2.86.0

26 Jan 00:35
v2.86.0
6b43715

Choose a tag to compare


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
pex 03f20a57e9a54d9d88bd24b566c1748dd514bde45b25aa636857497480f982f5 4981047
pex-linux-aarch64 62ad80d6179c32b41439bef01c3eca9cf366e68e5873a41f58b539da69cfb3f3 36607792
pex-linux-armv7l 9bcb7ee182acd0d6850fe1e07a07efc63c6469a0bec423dbea98a14224a0331b 32958543
pex-linux-riscv64 dc7d1c10c790da076a3b283d90717ac7625d887e7814b0a4db5a6c1653b25484 33091627
pex-linux-x86_64 76114a3abdd883267a4f5b3b943954f9c0605715706adaea1823445c543dfdee 42542964
pex-macos-aarch64 1e538d75e385cee96dd51776dd573400a35c5cd2d18df94ab6caf3eb8ea7c78b 24457554
pex-macos-x86_64 15afffe27cd06d837bd77d8cf1d848df665889e2229999bc8950a170551e64d5 24621572
pex-musl-linux-aarch64 af9b0d778f006bc5bdf4c7be2ce8e694a5211ba803396f54b8c8cf6ebf655353 35849982
pex-musl-linux-x86_64 a6874c3ec08cae41a241671b65d4d7a340bfda2321f5e126507deb3c391ec668 35955588

pex 2.85.3

22 Jan 06:22
v2.85.3
30d854b

Choose a tag to compare


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 faefcdb06a953a90a1b682414a985ed417771372f030bb9cb283a66a1c2696a3 32953265
pex-linux-riscv64 b20184ab4ad17c829fe54f507fcdff3910f0bd15386533a2e90e456ca4ad9583 33086355
pex-linux-x86_64 20d8473a1e32a35b5d6a934a43f908011b1732d0cb44327ec776ded544490531 42537689
pex-macos-aarch64 76b033f5bf1799f120d312ef8c6a9ddc08ebc3958453c71c803353638d731767 24452276
pex-macos-x86_64 b2b2eaf1416d50ab61443acd0e956b7f0562ccfaa3bf21f53071bea4ddc8c656 24616291
pex-musl-linux-aarch64 be7e1c6ed29232d2f647bb5658a65bb1fbd752fb4837706d9bdf53ddca9338c1 35844710
pex-musl-linux-x86_64 6a36a02edfa825f2c192f8f554f26594996f18b4b1cefe6ea199e5f3b7775fc9 35950309

pex 2.85.2

21 Jan 21:09
v2.85.2
8876fcc

Choose a tag to compare


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 655792124190a68849e7165f93712406982475ee6ab3cd9bc91f5d0d3e93132f 4960390
pex-linux-aarch64 b4a91a917e64a0de1f2610136fc86bf77e165ca95158e1e514670beb3d70142d 36586658
pex-linux-armv7l a15f48789c86748ac3b41886149b604055206927b475b151822c9ef3650642fb 32937399
pex-linux-riscv64 754d4a36ea38444d9c9ce95bbe13c7339276f6b376d9f367babe1f9e52c63fe1 33070490
pex-linux-x86_64 a5635b854eeb32eec140fd3d2ce8a0fffaa3bb1c60b02793d05a8df293c3aa26 42521826
pex-macos-aarch64 ff54714a5c1aaa3d9745a66572dcaae1eb5d9ff1ab91c09f43a9e54c5345440c 24436407
pex-macos-x86_64 4a23a41738dbe428643ddb397209d8f307ca80709bd32a638e4c3b4900b9c73e 24600426
pex-musl-linux-aarch64 0cbe84c6a6fb0cefa926daab7ad57095cf61626ab25e8d52d1c9478e1b836c17 35828843
pex-musl-linux-x86_64 b7e2df344dbf32e01ca44c1c8db0234fa2f99051d11f8662d3bea695d5637732 35934444

pex 2.85.1

21 Jan 04:01
v2.85.1
c449c7c

Choose a tag to compare


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 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 c5e230a1e1577f0b3660980839db589f3673bd866c275324fce52f0d0f247484 32935748
pex-linux-riscv64 72564127e1e34cb9b565f73443f1bfef7a6883bd64a348b471b60951eafdc3e3 33068828
pex-linux-x86_64 752acd3689888a5806d7d49900a81be3240f9b9b7600696daa2d7cf58e57fcd1 42520169
pex-macos-aarch64 092d0df1916bfba5fdbfd7b9d2e38a981790c7c90a4757158f8c6b0243cae65d 24434757
pex-macos-x86_64 cfcba727ef7a5cc5cd62d2cd89c01a974aade5c4db382a76e6a08ccb764888e5 24598774
pex-musl-linux-aarch64 4ffcf7027f92a7b626944b081bc2ed518f23898b097da1078d2a29627c91af1d 35827189
pex-musl-linux-x86_64 f942033af18af7e17c93e67385210eeaad5e3552b1baa7149db7cf917077e32e 35932794

pex 2.85.0

21 Jan 01:08
v2.85.0
9f633a1

Choose a tag to compare


2.85.0

This release introduces a new --interpreter-selection-strategy option for use when building PEXes
that use --interpreter-constraints. When multiple interpreters satisfy the specified
--interpreter-constraints, 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 and minor versions.

  • Support an --interpreter-selection-strategy option. (#3080)

file sha256 size
pex 2151c2296cccb568ac10bd8a504b9e5c7748a19e56d52036d61df4e529afe92e 4958734
pex-linux-aarch64 0333dd378f450f64d7045d91e10298118dcc1920c5d511f865be4edc223df4dd 36585002
pex-linux-armv7l 960979461bac0bac3a9110357a3f828181a36588e383699a471fe33c0c2449e4 32935746
pex-linux-riscv64 46584fbee3a69a3b0c5b6714058b21115fe5a0a04d5141902439d4ed4a032648 33068830
pex-linux-x86_64 7a7c7195f0603ea0c8dc7d080068995619386073a572b7c5307ffac1de591e77 42520174
pex-macos-aarch64 cc74ac36211d0765a3414f246c1f6bd04c6e45ac946ec57136a55f9114aab348 24434753
pex-macos-x86_64 a6cf285070fc2ad19e41e4b32f8b19bd541a5768d4e79d5b638e9b3f3aaeff7f 24598777
pex-musl-linux-aarch64 1fa62e7c9a974a467015ef3772a10115e294599682e55bc8f2741f095f1c490b 35827189
pex-musl-linux-x86_64 0447ad99e316e6e1d137d49a99fd105222fd4fee2597dd6719a0758c4eeba8f1 35932791

pex 2.84.0

20 Jan 02:26
v2.84.0
049ff2e

Choose a tag to compare


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-armv7l 697f01452f70a7d0afb28f68167770448932d9202cc755841b183117443536e6 32933370
pex-linux-riscv64 b342a968824d21e86871e03b24d72f2184d06a45491ebf911532638281e0d5ef 33066456
pex-linux-x86_64 8fa3e422977a64afca0ef536bf78ffe2abbdc8caeda4a675eb35e356a65f1ac0 42517788
pex-macos-aarch64 87ad630a0195ca2168bfbe3c9c0a8898e7dbd2233552d287eca0681c231cea55 24432376
pex-macos-x86_64 4b1b97d3354e072653dc83f1db0e21792dbb63b92abde11199ee20d85055297e 24596387
pex-musl-linux-aarch64 7b9b0fd7746c9948c83a482ddd5ef3d7979ca748b51621ce1b9c793bac1a55c5 35824809
pex-musl-linux-x86_64 441b8551939a2bc2b64b03c6dbacc43d000bd76e3cd97dbb758afeeb2bc04a61 35930410

pex 2.83.0

19 Jan 01:10
v2.83.0
6e52b10

Choose a tag to compare


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:

:; 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", "pex", "copyright", "credits" or "license" for more information.
>>> pex()
Running from PEX file: ./ansicolors-py2.py3-none-any.pex
Requirements:
  ansicolors
Activated Distributions:
  ansicolors-1.1.8-py2.py3-none-any.whl
>>>

:; python -mpex \
    --complete-platform package/complete-platforms/linux-x86_64.json \
    --complete-platform package/complete-platforms/macos-aarch64.json ansible \
    -o "ansible-{platform}.pex"

:; ./ansible-cp314-cp314-macosx_11_0_arm64.manylinux2014_x86_64.pex
Pex 2.83.0 hermetic environment with 1 requirement and 10 activated distributions.
Python 3.14.2 (main, Dec  5 2025, 14:39:48) [GCC 15.2.0] on linux
Type "help", "pex", "copyright", "credits" or "license" for more information.
>>> pex()
Running from PEX file: ./ansible-cp314-cp314-macosx_11_0_arm64.manylinux2014_x86_64.pex
Requirements:
  ansible
Activated Distributions:
  ansible-13.2.0-py3-none-any.whl
  ansible_core-2.20.1-py3-none-any.whl
  jinja2-3.1.6-py3-none-any.whl
  markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
  pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
  cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl
  cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
  pycparser-2.23-py3-none-any.whl
  packaging-25.0-py3-none-any.whl
  resolvelib-1.2.1-py3-none-any.whl
>>>
  • Support a {platform} placeholder in PEX file names. (#3078)

file sha256 size
pex 7e80fcb9cd0dc9f6c2e81020fa781ad37cd2de98c3076d075529a3838a2173a0 4956321
pex-linux-aarch64 ab2fc02282eeb4acdae739b2d3eabcf93990cfee5f975a1366c66786cf32c6b0 36582586
pex-linux-armv7l c3a23aa35d8842d495013b72d1c6a3f7259fdf11bad2fc3b890974ec0bb24ee4 32933331
pex-linux-riscv64 0894629934e170137cda015f2dce005fdb54a5f15182d9121d40cede0784470a 33066417
pex-linux-x86_64 375d32d391a3ef8db574a8c9a9112a0c8fd6d7237dd500f14422e25768b72f79 42517756
pex-macos-aarch64 dc3eee70c6a9ab9396e95963bb488096fa8ec945759150fb4454e24f9a3493f8 24432341
pex-macos-x86_64 a583965c4299c38e1d2c80cf458fbf686feca611680a3e0b1fcd472c3d9dc809 24596350
pex-musl-linux-aarch64 84755221154612913e96190d9522c4cc2d1a93460db38906cf280607e2723e40 35824777
pex-musl-linux-x86_64 583eceac64f056b6f08a8eb6f6e6244c3763a8ecb0f3d57657105d3c8cf39612 35930378

pex 2.82.1

16 Jan 00:31
v2.82.1
6d64128

Choose a tag to compare


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 85eb3136c35ec1280c8b7801204ac0095b08c3ae9d29195312a9af33eca5402a 32932674
pex-linux-riscv64 764d98a97f5d4ab9da29846ccece3086977fa5b1c08866f92ba1a9551e63e532 33065759
pex-linux-x86_64 27a054c778b7ed48627d6741b48a34dcd23af0e857a6ba7439af59bcce0aca64 42517100
pex-macos-aarch64 e97150aefc6340fde4a88b009b581d1b4834730e0a087e2f2d844838b83de97d 24431684
pex-macos-x86_64 f9d8b5efb90185bf3b13e3e43064ff10ab76f7939bdc4d03b0e4d9ff1fb52201 24595697
pex-musl-linux-aarch64 6a6603ecaa6fda7b431eee013ce9d0e42cee1e67a6f6c956d74fda4c09186975 35824116
pex-musl-linux-x86_64 a5e3d38c5b32e08842346d6a80ded8682c2208f61ba35b74b16016c87dee73b5 35929716

pex 2.82.0

15 Jan 16:51
v2.82.0
7cc86fd

Choose a tag to compare


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 contained in a PEX to third party scripts without extra shim code.

  • Support passing PEX file paths to 3rd party scripts. (#3074)

file sha256 size
pex 6b48461f7ba94ff1702aab287cf8cff0b7baec7b16a4a7b0b86212083b3c8ff9 4955508
pex-linux-aarch64 9f2d6d02ab34a45f3108d1ccd77dfd87ecb7d9322fdaeacdf20659c05bdd3341 36581770
pex-linux-armv7l 731854cbd24a9121c3566ca5c962180b1c4d239e56aebd3b9fb8da568cddd09e 32932520
pex-linux-riscv64 3c478afbd7f268c09f43eeaa471e99d58343484bf3f857f296ce0244a4097929 33065603
pex-linux-x86_64 d245a6206a29f0bfb3e9973fe082cc56cfd4e2dd7c1d872921b89cfdbb2b7e8e 42516943
pex-macos-aarch64 0683a406550999849adcb38187b98f5d5ae69b915be3a2f8d285e5a90e8f8b77 24431529
pex-macos-x86_64 1317be8e4a0b0154599b71a13909535a7c8e89ba4a940931937330713d071be5 24595541
pex-musl-linux-aarch64 f2ce3e56fa7add109abcc6f3ec93cfa72c5a08a2bf59efbea3ba8d226f1dc8f9 35823958
pex-musl-linux-x86_64 351b49ea5f9e6fd7dd42bfb0254f5549c5a7f084877fd35dba6395315d7f1675 35929563