博客
关于我
python | shiv,一个超酷的 打包工具 Python 库!
阅读量:799 次
发布时间:2023-03-06

本文共 2070 字,大约阅读时间需要 6 分钟。

Python 打包工具 Shiv 教程:快速将项目打包成单文件

什么是 Shiv?

Shiv 是一个强大的 Python 打包工具,专为开发者设计。它能够将你的 Python 项目及所有依赖打包成一个单一的可执行文件,使得项目的分发和部署更加便捷。与传统的打包工具不同,Shiv 基于 zipapp 创建自包含的运行环境,这意味着用户无需依赖系统环境即可运行打包的项目,非常适合脚本和小型应用的部署。

安装 Shiv

安装 Shiv 非常简单,仅需通过以下命令即可完成:

pip install shiv

安装完成后,你可以在命令行中使用 shiv 命令进行打包操作。

Shiv 的核心功能

1. 单文件打包

Shiv 的核心功能是将整个项目及所有依赖打包成一个可执行文件。无论是脚本还是小型应用,生成的文件都可以直接运行,无需额外配置。

2. 自包含运行环境

Shiv 基于 zipapp 创建自包含的运行环境。当打包文件解压运行时,所有依赖都会被自动加载,无需依赖系统的 Python 环境。

3. 支持环境变量配置

Shiv 允许用户通过环境变量进行自定义配置。你可以根据需要设置运行时的缓存目录或指定特定的 Python 解释器。

4. 跨平台支持

Shiv 适用于多种平台,生成的可执行文件可以在 Windows、macOS 和 Linux 等系统间轻松分发和运行。

使用 Shiv 打包项目

1. 创建入口函数

在项目目录中新建一个 my_module.py 文件,定义入口函数:

# my_module.pydef main():    print("Hello from Shiv!")

2. 打包项目

在项目目录中运行以下命令,将项目及依赖打包成一个可执行文件:

shiv --output-file my_app.pyz -e my_module:main .
  • --output-file 指定生成的可执行文件名。
  • -e 参数指定入口函数,格式为 模块名:函数名

3. 直接运行

打包完成后,你可以直接运行生成的 my_app.pyz 文件:

./my_app.pyz

运行结果会输出:

Hello from Shiv!

支持依赖管理

1. 添加依赖

确保项目目录中包含 requirements.txt 文件,列表中列出所有所需依赖。例如:

Flask==2.0.3requests==2.31.0

2. 打包依赖

在运行 shiv 命令时,添加 -r 参数指定 requirements.txt 文件:

shiv -o my_app_with_deps.pyz -e my_module:main -r requirements.txt .

生成的 my_app_with_deps.pyz 文件包含了所有依赖库,便于分发和运行。

高级功能

1. 自定义 Python 解释器

在某些环境下,可能需要指定特定的 Python 解释器。你可以通过 --python 参数指定路径:

shiv -o my_app.pyz -e my_module:main --python="/usr/bin/python3.8" .

这样生成的可执行文件会在运行时使用指定的 Python 解释器。

2. 缓存控制

Shiv 默认将打包文件缓存到用户目录下的 .shiv 文件夹。你可以通过环境变量 SHIV_ROOT 自定义缓存目录:

export SHIV_ROOT="/custom/cache/directory"./my_app.pyz

3. 自定义入口脚本

如果项目中包含多个脚本或函数,Shiv 支持通过 entry_point 配置指定不同的入口。你可以在 setup.py 中配置入口脚本:

# setup.pyfrom setuptools import setup, setupsetup(    name="my_app",    version="0.1",    py_modules=["my_module"],    entry_points={        "console_scripts": [            "myapp=my_module:main",        ],    },)

然后运行以下命令生成带有入口配置的可执行文件:

shiv -o my_custom_app.pyz .

生成的 my_custom_app.pyz 将会使用 setup.py 中配置的 main() 作为默认入口函数。

总结

Shiv 是一个轻量高效的打包工具,能够将 Python 项目连同依赖打包成单文件可执行格式,简化了部署和分发过程。它不仅适用于脚本和小型应用的分发,还适用于微服务和无服务器架构的场景。通过环境变量和缓存配置,Shiv 提供了高度的可定制性,适合开发者在不同场景下使用。如果你需要快速部署或分发 Python 应用,不妨尝试 Shiv,让项目打包分发更加简单高效!

转载地址:http://iuofk.baihongyu.com/

你可能感兴趣的文章
Python Panda TIME 系列重新采样
查看>>
python pandas TimeStamps到夏令时的本地时间字符串
查看>>
Python pandas 数据清洗与数据绘图实战
查看>>
Python Pandas 用顶行替换标题
查看>>
Python pandas 通过 dt 访问器有效地将日期时间转换为时间戳
查看>>
Python Pandas-从DataFrame按类别绘制多个条形图
查看>>
Python Pandas:每月或每周拆分 TimeSerie
查看>>
python pandas中融化的对面
查看>>
python pandas从时间序列中提取唯一日期
查看>>
Python PyQt5 将不再显示此消息复选框添加到 QMessageBox
查看>>
Python PyQt5:如何使用 PyQt5 显示错误消息
查看>>
Python PYSFTP-以字符串/文本形式传递私钥,而不是传递文件路径
查看>>
Python pytest 面试题!
查看>>
Python pytz 时区函数返回一个相差 9 分钟的时区
查看>>
python rabbitmq实现简单/持久/广播/组播/topic/rpc消息异步发送可配置Django
查看>>
Python random和json模块
查看>>
Python random模块seed理解
查看>>
python range()函数
查看>>
Python rdflib可传递查询
查看>>
python redis 集群_python 搭建redis集群
查看>>