跳转到主要内容

PEX打包工具链。

项目描述

https://github.com/pex-tool/pex/workflows/CI/badge.svg?branch=main https://img.shields.io/pypi/l/pex.svg https://img.shields.io/pypi/v/pex.svg https://img.shields.io/pypi/pyversions/pex.svg https://img.shields.io/pypi/wheel/pex.svg https://img.shields.io/discord/1205942638763573358

概述

pex是一个用于生成.pex(Python EXecutable)文件的库,这些文件是类似于virtualenvs的Python可执行环境。pex是在PEP 441中概述的思想的扩展,使得Python应用的部署变得像cp一样简单。pex文件甚至可以包含多个特定平台的Python分发,这意味着单个pex文件可以在Linux和OS X之间移植。

可以使用pex工具构建pex文件。构建系统,如PantsBuck{py}gradle也支持直接构建.pex文件。

仍然不确定pex是什么以及它是如何工作的?观看这个快速闪电演讲:WTF is PEX?

pex采用Apache2许可证。

安装

要安装pex,只需

$ pip install pex

您还可以使用tox在git克隆中构建pex

$ tox -e package
$ cp dist/pex ~/bin

这将在dist/pex中构建一个pex二进制文件,可以复制到您的$PATH。这种方法的优势在于它使您的Python环境尽可能保持空的状态,并且更符合pex的哲学。

简单示例

在环境中启动具有requestsflaskpsutil的解释器

$ pex requests flask 'psutil>2,<3'

从Pip保存依赖项

或者,您也可以通过requirements.txt冻结当前的虚拟环境并在任何地方执行它

$ pex $(pip freeze) -o my_virtualenv.pex
$ deactivate
$ ./my_virtualenv.pex

临时环境

在包含flask的环境中运行webserver.py,这是一种快速实验的方式

$ pex flask -- webserver.py

使用Sphinx的Sphinx entry point sphinx:main在临时pex环境中启动Sphinx

$ pex sphinx -e sphinx:main -- --help

使用入口点

在配置中指定console_scripts入口点的项目可以为这些入口点构建独立的可执行文件。

要构建一个独立的pex-tools-executable.pex二进制文件,该文件运行在所有pex版本2.1.35及更高版本分发中找到的pex-tools控制台脚本

$ pex "pex>=2.1.35" --console-script pex-tools --output-file pex-tools-executable.pex

指定特定解释器

您还可以构建使用特定解释器类型的pex文件

$ pex "pex>=2.1.35" -c pex-tools --python=pypy -o pex-tools-pypy-executable.pex

大多数pex选项可以很好地组合在一起,因此上述命令可以混合使用,并提供等效的简短选项。

有关完整选项列表,只需输入pex --help

将pex集成到您的流程中

如果您使用tox(您应该使用!),将包装测试环境添加到您的tox.ini中是一种简单地将pex集成到您的流程中的方法

[testenv:package]
deps = pex
commands = pex . -o dist/app.pex

然后,使用tox -e package将生成您应用程序的可移动副本,您可以将它复制到预发布或生产环境。

文档

有关Pex、构建.pex文件以及.pex文件如何工作的更多文档,可在https://docs.pex-tool.org找到。

开发

Pex使用tox进行测试和开发自动化。要运行测试套件,只需调用tox。

$ tox

如果您没有tox,可以生成tox的pex。

$ pex tox -c tox -o ~/bin/tox

Tox提供许多有用的命令和选项,具体请参阅https://tox.wiki/en/latest/。以下提供了在Pex开发过程中最常用的命令,但建议您阅读文档,以更好地了解Tox的工作原理以及如何执行更高级的命令。

要运行特定环境,通过运行tox --listenvs-all来识别您想要调用的环境的名称,然后按照以下方式运行

$ tox -e fmt

运行MyPy

$ tox -e check

我们所有的tox测试环境都允许传递参数,这有助于运行特定测试

$ tox -e py37-integration -- -k test_reproducible_build

要从源运行Pex,而不是通过您的PATH,请通过Python运行

$ python -m pex

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台的应用程序文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源代码分布

pex-2.20.2.tar.gz (4.4 MB 查看哈希值)

上传时间 源代码

构建分布

pex-2.20.2-py2.py3-none-any.whl (3.5 MB 查看哈希值)

上传时间 Python 2 Python 3

支持