博客
关于我
python | shiv,一个超酷的 打包工具 Python 库!
阅读量:797 次
发布时间: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 mysql 基于 sqlalvhrmy_Python操作MySQL:pymysql和SQLAlchemy
查看>>
Python NLP完整项目实战教程(1)
查看>>
Python NLP自然语言处理详解
查看>>
python nltk nltk_data 离线安装,chatterbot
查看>>
python note 06 编码方式
查看>>
python numba 转灰度图_使用NumPy、Numba的简单使用(二)
查看>>
Python Numpy 关于 linspace()函数 使用详解(全)
查看>>
Python numpy插入、读取至postgreSQL数据库中bytea类型字段
查看>>
Python numpy数据的保存和读取
查看>>
python numpy矩阵索引_python – 在2D numpy ndarray或numpy矩阵中获取前N个值的索引
查看>>
Python OCR库:自动化测试验证码识别神器!
查看>>
python opencv - 斑点检测或圆形检测
查看>>
Python OpenCV HoughLinesP 无法检测线
查看>>
Python OpenCV-使用透明度覆盖图像
查看>>
python Opencv图像基础操作
查看>>
Python OpenCV将图像转换为字节字符串?
查看>>
python OpenCV视频的读取及保存
查看>>
python open和file的区别
查看>>
python open读取文件并对换行进行处理
查看>>
python os, os.path和sys模块
查看>>