跳转到主要内容

将Python包转换为单个脚本

项目描述

可以使用 Stickytape 将 Python 脚本及其依赖的任何 Python 模块转换为单个文件 Python 脚本。

由于这依赖于正确分析您的脚本和任何依赖的模块,因此在所有情况下可能无法正常工作。我很久以前为了一个特定的用例拼凑了这段代码,因此许多正常的 Python 导入用法没有得到适当支持。如果您需要从您的 Python 脚本创建独立的可执行文件,我建议使用 PyInstaller 等替代方案。

安装

pip install stickytape

用法

您可以使用 --add-python-path 参数告诉 stickytape 要搜索的目录。例如

stickytape scripts/blah --add-python-path . > /tmp/blah-standalone

或者直接输出到文件

stickytape scripts/blah --add-python-path . --output-file /tmp/blah-standalone

您还可以指定 stickytape 应该使用的 Python 可执行文件,例如虚拟环境中的 Python 可执行文件

stickytape scripts/blah --python-binary _virtualenv/bin/python --output-file /tmp/blah-standalone

stickytape 无法自动检测动态导入,但您可以使用 --add-python-module 显式包含模块

stickytape scripts/blah --add-python-module blah.util

默认情况下,stickytape 将忽略脚本中的 shebang 并在输出文件中使用 "#!/usr/bin/env python"。要复制原始脚本中的 shebang,请使用 --copy-shebang

stickytape scripts/blah --copy-shebang --output-file /tmp/blah-standalone

正如您所期望的,对于会篡改源文件的程序,有一些注意事项

  • 由于 stickytape 生成输出文件的方式,您的脚本源文件应使用 UTF-8 编码。如果您的脚本在其前两行未声明编码,则从 Python 3 开始默认为 UTF-8。

  • 您的脚本不应有任何 from __future__ 导入。

  • 依赖于特定文件位置的任何内容都可能不再工作。换句话说,__file__可能并不是非常有用。

  • 未导入的文件将不会被包含。可能成为您项目一部分的静态数据,例如其他文本文件或图像,将不会被包含。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分布

stickytape-0.2.1.tar.gz (6.3 kB 查看哈希)

上传时间

构建分布

stickytape-0.2.1-py3-none-any.whl (8.1 kB 查看哈希)

上传时间 Python 3

由以下组织支持