博客
关于我
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 excel 饼图 简书_Python实现绘画多个饼图
查看>>
python excel接口自动化测试框架!
查看>>
Python exec 函数解析:探索动态代码执行的无限可能!
查看>>
Python EXEC和__NAME__
查看>>
python file
查看>>
Python FileDialog获取文件夹路径不是文件
查看>>
python filter过滤器的使用_python基础知识分享:zip()、filter函数和reduce如何使用?...
查看>>
python flask 请求code 400, message Bad request version
查看>>
Python Flink Stateful函数入口上的Kafka键访问
查看>>
Python float - str - 浮动怪异
查看>>
Python Flower库:分布式任务管理与监控
查看>>
Python for 循环和迭代器行为
查看>>
Python For循环多次返回
查看>>
python frame_python3 selenium自动化 frame表单嵌套的切换方法
查看>>
Python ftplib - 指定端口
查看>>
Python furl库:一键搞定复杂URL操作
查看>>
Python GC 也会关闭文件吗?
查看>>
python gen_key.py 报错 提示找不到OpenSSL lib
查看>>
python getattrribute_Python学习——面向对象高级之反射
查看>>
Python进阶语法:字典推导式
查看>>