A tool for generating .pex (Python EXecutable) files, lock files and venvs.
APACHE-2.0 License
Bot releases are hidden (Show)
Published by jsirois over 3 years ago
This is another hotfix release to fix incorrect resolve post-processing failing otherwise correct
resolves.
Published by jsirois over 3 years ago
This is another hotfix release to fix a regression in Pex --sources-directory
handling of
relative paths.
Chroot.symlink
. #1194Published by jsirois over 3 years ago
This is a hotfix release that fixes requirement parsing when there is a local file in the CWD with
the same name as the project name of a remote requirement to be resolved.
Published by jsirois over 3 years ago
This release brings support for a --venv
execution mode to complement --unzip
and standard
unadorned PEX zip file execution modes. The --venv
execution mode will first install the PEX
file into a virtual environment under ${PEX_ROOT}/venvs
and then re-execute itself from there.
This mode of execution allows you to ship your PEXed application as a single zipfile that
automatically installs itself in a venv and runs from there to eliminate all PEX startup overhead
on subsequent runs and work like a "normal" application.
There is also support for a new resolution mode when building PEX files that allows you to use the
results of a previous resolve by specifying it as a -pex-repository
to resolve from. If you have
many applications sharing a requirements.txt / constraints.txt, this can drastically speed up
resolves.
pip debug
warning. (#1183)Published by jsirois almost 4 years ago
This release upgrades Pip to 20.3.3 + a patch to fix Pex resolves using
the pip-legacy-resolver
and --constraints
. The Pex package is
also fixed to install for Python 3.9.1+.
Published by jsirois almost 4 years ago
This release upgrades Pex to the latest Pip which includes support for
the new 2020-resolver (see:
https://pip.pypa.io/en/stable/user_guide/#resolver-changes-2020) as well
as support for macOS BigSur. Although this release defaults to the
legacy resolver behavior, the next release will deprecate the legacy
resolver and support for the legacy resolver will later be removed to
allow continuing Pip upgrades going forward. To switch to the new
resolver, use: --resolver-version pip-2020-resolver
.
Published by jsirois almost 4 years ago
This release fixes a deadlock that could be experienced when building
PEX files in highly concurrent environments in addition to fixing
pex --help-variables
output.
A new suite of PEX tools is now available in Pex itself and any PEXes
built with the new --include-tools
option. Use
PEX_TOOLS=1 pex --help
to find out more about the available tools and
their usage.
Finally, the long deprecated exposure of the Pex APIs through _pex
has
been removed. To use the Pex APIs you must include pex as a dependency
in your PEX file.
PythonInterpreter
venv support. (#1129)PythonInterpreter
binary normalization. (#1125)requires_dists
function. (#1122)is_exe
helper. (#1123)safe_open
for single element relative paths. (#1118)--help-variables
docs. (#1113)Published by jsirois almost 4 years ago
iter_compatible_interpreters
with path
. (#1110)Requires-Python
environment marker mapping. (#1105)InstalledDistribution
env markers. (#1104)-R
/--resources-directory
. (#1103)/dev/null
. (#1102)Published by Eric-Arellano almost 4 years ago
This release improves interpreter discovery to prefer more recent patch versions, e.g. preferring
Python 3.6.10 over 3.6.8.
We recently regained access to the docsite, and https://pex.readthedocs.io/en/latest/ is now
up-to-date.
Prefer more recent patch versions in interpreter discovery. (#1088)
Fix --pex-python
when it's the same as the current interpreter. (#1087)
Fix dir_hash
vs. bytecode compilation races. (#1080)
Fix readthedocs doc generation. (#1081)
Published by benjyw about 4 years ago
This release adds the --python-path
option, which allows controlling the
interpreter search paths when building a PEX.
The release also removes --use-first-matching-interpreter
, which was a misfeature. If you want to use
fewer interpreters when building a PEX, use more precise values for --interpreter-constraint
and/or
--python-path
, or use --python
or --platform
.
--python-path
to change interpreter search paths when building a PEX. (#1077)--use-first-matching-interpreter
misfeature. (#1076)--inherit-path
handling. (#1072)Published by jsirois about 4 years ago
This release brings official support for Python 3.9 and adds a new --tmpdir
option to explicitly
control the TMPDIR used by Pex and its subprocesses. The latter is useful when building PEXes in
space-constrained environments in the face of large distributions.
The release also fixes --cert
and --client-cert
so that they work with PEP-518 builds in
addition to fixing bytecode compilation races in highly parallel environments.
--tmpdir
option to the Pex CLI. (#1068)sys.executable
unless macOS Framework. (#1065)--cert
and --client-cert
. (#1063)--cert
for PEP-518 builds. (#1060)Published by jsirois about 4 years ago
This release fixes a bug in --resolve-local-platforms
handling that made it unusable in 2.1.16
(#1043) as well as fixing a long standing file handle leak (#1050) and a bug when running under
macOS framework builds of Python (#1009).
--unzip
performance regression. (#1056)iter_compatible_interpreters
. (#1048)sys.executable
being accurate. (#1049)util.py
and tracer.py
(#1044)Published by jsirois about 4 years ago
This release fixes a bug in sys.path scrubbing / hermeticity (#1025) and a bug in the -D / --sources-directory
and -R / --resources-directory
options whereby PEP-420 implicit (namespace) packages were not respected (#1021).
Published by Eric-Arellano about 4 years ago
A patch release to fix an issue with the --use-first-matching-interpreter
flag.
Published by Eric-Arellano about 4 years ago
This release adds the --use-first-matching-interpreter
flag, which
can speed up performance when building a Pex at the expense of being
compatible with fewer interpreters at runtime.
--use-first-matching-interpreter
. (#1008)Published by jsirois over 4 years ago
The focus of this release is better support of the --platform
CLI
arg. Platforms are now better documented and can optionally be resolved
to local interpreters when possible via --resolve-local-platforms
to
better support creation of multiplatform PEXes.
Published by benjyw over 4 years ago
A patch release to deploy the PEX_EXTRA_SYS_PATH feature.
Published by benjyw over 4 years ago
A patch release to fix a symlink issue in remote execution environments.
Published by jsirois over 4 years ago
This release focuses on the resolver API and resolution performance. Pex 2 resolving using Pip is
now at least at performance parity with Pex 1 in all studied cases and most often is 5% to 10%
faster.
As part of the resolution performance work, Pip networking configuration is now exposed via Pex CLI
options and the NetworkConfiguration
API type / new resolver.resolve
API parameter.
With network configuration now wired up, the PEX_HTTP_RETRIES
and PEX_HTTP_TIMEOUT
env var
support in Pex 1 that was never wired into Pex 2 is now dropped in favor of passing --retries
and --timeout
via the CLI (See: #94)
.can_add()
(#973)--local
mode for packaging the Pex PEX. (#971)rU
mode (#956)Published by benjyw over 4 years ago
This release introduces the ability to copy requirements from an existing PEX into a new one.
This can greatly speed up repeatedly creating a PEX when no requirements have changed.
A build tool (such as Pants) can create a "requirements PEX" that contains just a static
set of requirements, and build a final PEX on top of that, without having to re-run pip
to resolve requirements.