Releases: pex-tool/pex
pex 2.1.155
2.1.155
This release brings support for --pip-version 23.3.2
along with
optimizations that reduce built PEX size for both --include-tools
and
--venv
PEXes (which includes the Pex PEX) as well as reduce PEX build
time for --pre-install-wheels
PEXes (the default) and PEX cold first
boot time for --no-pre-install-wheels
PEXes that use more than one
parallel install job.
pex 2.1.154
2.1.154
This release brings three new features:
- When creating PEXes without specifying an explicit
--python-shebang
, an appropriate shebang is chosen correctly in
more cases than previously and a warning is emitted when the shebang
chosen cannot be guaranteed to be correct. The common case this
helps select the appropriate shebang for is PEXes built using
--platform
or--complete-platform
. - PEXes can now be created with
--no-pre-install-wheels
to cut down
PEX build times with a tradeoff of roughly 10% greater boot overhead
upon the 1st execution of the PEX file. For PEXes with very large
dependency sets (machine learning provides common cases), the build
time savings can be dramatic. - PEXes can now be told to install dependencies at runtime on 1st
execution using parallel processes using--max-install-jobs
at PEX
build time or by setting thePEX_MAX_INSTALL_JOBS
environment
variable at runtime.
The last two features come with complicated tradeoffs and are turned off
by default as a result. If you think they might help some of your use
cases, there is more detail in the command line help for
--no-pre-install-wheels
and --max-install-jobs
as well as in the
pex --help-variables
output for PEX_MAX_INSTALL_JOBS
. You can also
find a detailed performance analysis in #2292 for the extreme cases of
very small and very large PEXes. In the end though, experimenting is
probably your best bet.
pex 2.1.153
2.1.153
This release fixes Pex runtime sys.path
scrubbing to do less work and
thus avoid errors parsing system installed distributions with bad
metadata.
- Remove Pex runtime scrubbing dist discovery. (#2290)
pex 2.1.152
2.1.152
This release fixes the computation of the hash of the code within a PEX
when nested within directories, a bug introduced in 2.1.149.
- Exclude pyc dirs, not include, when hashing code (#2286)
pex 2.1.151
2.1.151
This release brings support for a new --exclude <req>
PEX build option
that allows eliding selected resolved distributions from the final PEX.
This is an advanced feature that will, in general, lead to broken PEXes
out of the box; so read up on the --exclude
command line help to make
sure you understand the consequences.
This release also brings a fix for --inject-env
that ensures the
specified environment variables are always injected to the PEX at
runtime regardless of the PEX entry point exercised.
pex 2.1.150
pex 2.1.149
2.1.149
Fix --style universal
lock handing of none
ABI wheels with a
specific Python minor version expressed in their wheel tag. There are
not many of these in the wild, but a user discovered the case of
python-forge 18.6.0 which supplies 1 file on PyPI:
python_forge-18.6.0-py35-none-any.whl
.
- Fix universal lock handling of the none ABI. (#2270)
pex 2.1.148
2.1.148
Add support to the Pex for checking if built PEXes are valid Python
zipapps. Currently, Python zipapps must reside in 32 bit zip files due
to limitations of the stdlib zipimport
module's zipimporter
; so this
check amounts to a check that the built PEX zip does not use ZIP64
extensions. The check is controlled with a new
--check {none,warn,error}
option, defaulting to warn.
- Add --check support for zipapps. (#2253)
pex 2.1.147
2.1.147
Add support for --use-pip-config
to allow the Pip Pex calls to read
PIP_*
env vars and Pip configuration files. This can be particularly
useful for picking up custom index configuration (including auth).
- Add support for --use-pip-config. (#2243)