xar打包工具链。
xar的Python项目详细描述
xar允许您将许多文件打包成一个独立的可执行文件。 这样便于分发和安装。
一个.xar
文件是一个只读的文件系统映像,它在安装时看起来像
用户空间程序的常规目录。这需要一次性的
为此文件系统安装驱动程序
(squashfs)。
xar发音像"沙皇"(/t 642;ar/)。xar中的"x"应该是 Facebook上所有其他信件的占位符此格式最初是 设计用于替换基于zip的par(python存档)、jsar(javascript存档)。 LAR(Lua存档),等等。
用例
xar文件有两个主要用例。首先是简单的收集 在文件系统中的某个位置自动原子挂载的许多文件。 使用xar文件可以极大地缩小它所保存数据的磁盘大小。 压缩到原始大小的20%以下并非闻所未闻。这样可以节省 每台计算机多GB,减少随机磁盘IO。尤其是 在配备闪存的机器上非常重要。
第二个用例是第一个用例的扩展——通过使xar文件
可执行并使用xarexec
helper,xar将成为一个自包含的
可执行代码及其数据包。一个流行的例子是python
包括所有python源代码文件以及
本机共享库、配置文件和其他数据。
这可以用速度更快的系统替换virtualenvs和pex文件。 更少的开销,更兼容,实现更好的压缩。 缺点是需要setuid助手来执行安装。
xar对于python使用的优势
对于python来说,squashfs看起来像是磁盘上的常规文件。这样它就可以正常使用 cpython更支持的导入。
在应用程序中,Squashfs看起来也是常规文件。你不需要 使用
pkg_resources
或其他技巧访问包中的数据文件。与ZIP相比,使用zStandard压缩的Squashfs还节省了磁盘空间 文件
Squashfs不需要将
文件解包到临时位置,如 压缩文件可以。
squashfs的启动速度比解压缩zip文件快。你只需要 装载文件系统一次。对应用程序的后续调用将重用 现有支座。
squashfs只解压缩应用程序使用的页面,并且 解压缩的页面缓存在页面缓存中。
squashfs是只读的,因此可以保证应用程序的完整性 与使用virtualenvs或解压缩到临时目录相比。
基准
优化性能(空间和执行时间)是 小精灵。我们使用开源工具运行基准测试来比较PEX、XAR和 本机安装基于以下指标:
- 大小:可执行文件的大小(字节)
- 冷启动时间:没有安装或提取任何内容时所用的时间
- 热启动时间:提取缓存或装入xar squashfs所用的时间
pex是用 结果表明,文件大小(使用zstd compressionzstd compression)和启动时间
使用xars改进。当运送到大量
服务器,尤指短时间运行的可执行文件,如小数据
Web服务器或交互式命令行工具上的收集脚本。 xar要求: 这是一个setuptools插件,允许您打包python应用程序
作为.xar文件。它需要 或者您可以从这个存储库安装它: 安装后,使用控制台脚本转到您最喜欢的python项目,然后
运行: setuptools扩展名 这是用C++编写的一个二进制文件,用来安装一个SUBASFS图像。
它需要安装SquashFuse。注意电流 您可以使用: 只需运行: xar提供了一个简单的cli来从python可执行文件或目录创建xar。
我们可以从现有的python可执行zip文件(如pex)创建xar。 您还可以从目录创建一个xar,并告诉xar哪个可执行文件
一开始就跑。 如果您更改了 有关如何提供帮助的信息,请参见贡献文件。 xar获得bsd许可。python3 setup.py bdist_pex--bdist all
和xars构建的
使用python3 setup.py bdist\u xar--xar compression algorithm=zstd构建
<表><广告>
< /广告><正文>控制台脚本 大小 冷启动时间
热启动时间
Django管理员(本地) 22851072乙 - 0.220秒 django admin.pex 8529089乙 1.705秒 0.772秒 django admin.xar 5464064亿英镑(-36%) 0.141秒(-92%) 0.122秒(-84%) 黑色(本机) 1020928乙 - 0.245秒 黑色.pex 677550桶 0.737秒 0.619秒 黑色.xar 307200桶(-55%) 0.245秒(-67%) 0.219秒(-65%) Jupyter(本地) 64197120 B - 0.399秒 jupyter.pex 17315669 b 2.152秒 1.046秒 jupyter.xar 17530880桶(+1%) 0.213秒(-90%) 0.181秒(-83%) 要求
squashfuse ll
运行xarsxar的组分
b列表x或
squashfs工具
。从pypi安装
稳定版本:pip install xar
python setup.py install
python setup.py bdist_xar
bdist\u xar
具有配置xar的选项,大多数
重要的是,解释器设置所使用的python解释器。跑
python setup.py bdist\u xar--help
获取完整的选项列表。Xarexec_保险丝
squashfuse
package
在ubuntu上不包括squashfuse ll,所以您必须从
源代码mkdir build && cd build && cmake .. && make && [sudo] make install
示例
b列表x或
python /path/to/black/setup.py bdist_xar [--xar-compression-algorithm=zstd]
/path/to/black/dist/black.xar --help
使xar
make_xar --python black.pex --output black.xar
> mkdir myxar
> echo -n "#\!/bin/sh\nshift\necho \$@" > myxar/echo
> chmod +x myxar/echo
> make_xar --raw myxar --raw-executable echo --output echo
> ./echo hello world
hello world
xarexec_fuse
将使用xar路径作为
第一个参数,之后将转发xars参数。在本地运行Circle CI测试
< PrS你需要安装Docker(和可能的Docker机器),因为它是
运行代码。那么你需要
安装并运行circleci
cli
circleci build
.circleci/config.yml
,则应在提交之前对其进行验证circleci config validate
贡献
许可证
推荐PyPI第三方库