博客
关于我
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 基础语法:基本数据类型(字典)
查看>>
Python 基础语法:基本数据类型(字符串)
查看>>
Python 基础语法:基本数据类型(集合)
查看>>
Python编程的终极十大工具
查看>>
python 堆排序
查看>>
python编程方式之一-函数式编程
查看>>
python 复习计划
查看>>
Python 多处理 apply_async 永远不会在 Windows 7 上返回结果
查看>>
Python 多处理 Numpy 随机
查看>>
Python 多处理 >= 125 列表永远不会完成
查看>>
Python 多处理:在第一个子错误时中止映射
查看>>
Python 多处理不断产生 pythonw.exe 进程而不做任何实际工作
查看>>
Python 多处理从不加入
查看>>
Python 多处理如何优雅地退出?
查看>>
Python 多处理将子进程的标准输出重定向到 Tkinter 文本
查看>>
Python 多处理库错误(AttributeError:__exit__)
查看>>
Python 多处理模块的 .join() 方法到底在做什么?
查看>>
python 多线程与GIL
查看>>
Python 多线程学习(转)
查看>>
python 多进程-基础
查看>>