一个可以将您的包打包到zipapp的PDM插件
项目描述
pdm-packer
一个可以将您的包打包到zipapp的PDM插件
需求
pdm-packer需要Python >=3.7
安装
在PDM 1.6.4+上,您可以直接通过以下方式安装插件:
$ pdm plugin add pdm-packer
如果您使用推荐工具pipx
安装了PDM,请通过以下方式添加此插件:
$ pipx inject pdm pdm-packer
或者,如果您使用pip install --user pdm
安装了PDM,请使用pip
安装到用户站点:
$ python -m pip install --user pdm-packer
否则,将pdm-packer
安装到与PDM相同的位置。
用法
$ pdm pack [common-options] [pack-options]
常用选项
-h, --help
显示此帮助信息并退出
-v, --verbose
-v用于详细输出,-vv用于更详细
-g, --global
使用全局项目,使用
-p
选项提供项目根目录
-p PROJECT_PATH, --project PROJECT_PATH
指定另一个路径作为项目根目录,这将更改pyproject.toml和
__pypackages__
的基础
打包选项
-m MAIN, --main MAIN
指定zipapp的控制台脚本入口点
-o OUTPUT, --output OUTPUT
指定输出文件名。默认情况下,文件名将根据项目名称推断
-c, --compress
使用deflate方法压缩文件,默认不压缩
--pyc, --compile
将源代码编译成pyc文件
--no-py
删除.py文件以利于.pyc文件
-i INTERPRETER, --interpreter INTERPRETER
Python解释器路径,默认:项目解释器
--exe
创建可执行文件。如果未指定输出文件,文件名将以.exe(Windows)或无后缀(Posix)结尾
另请参阅:https://docs.pythonlang.cn/3.9/library/zipapp.html
示例
# Create with default name(<project_name>.pyz) and console_script as the __main__.py
pdm pack
# Create an executable file
pdm pack --exe
# Create with custom __main__.py and filename
pdm pack -o app.pyz -m app:main
注意事项
- 如果结果zipapp包含二进制文件,则只能部署到具有相同abi的平台,该app的跨abi使用可能会遇到失败。
- 除了提供给
--main
的脚本外,任何控制台脚本都将丢失。 - .exe文件与
pyinstaller
生成的文件不同,因为它不嵌入Python解释器。这意味着您必须在部署平台上安装与版本完全相同的Python。 - 如果您在项目中要运行代码,项目本身也应安装到
__pypackages__
中。确保您已经在pyproject.toml
中设置了项目名称。
关于可执行zipapp
默认情况下,zipapp以.pyz
后缀创建。在Windows上,如果您已将.pyz
文件与Python程序关联,则可以在资源管理器中双击文件来运行应用程序。但是,如果您通过启用--exe
选项创建应用程序,则可以在Windows上拥有.exe文件,在类Unix系统上拥有可执行文件,这样应用程序就可以在没有以python
命令作为前缀的情况下执行,无论您是否正确关联了文件扩展名。
变更日志
请参阅CHANGELOG.md
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。