能否创建包含依赖项的可执行Python zip归档文件用于跨平台分发?
用Python zipapp打包包含第三方依赖的可执行Zip归档文件
你的需求完全可行,通过标准库的zipapp工具就能实现将第三方依赖(如termcolor)和应用代码一并打包成.pyz文件,无需用户手动安装依赖。以下是具体解决步骤:
1. 整理项目结构
确保你的项目目录包含入口文件和依赖清单:
my_app/ ├── __main__.py # 应用入口,将你的测试代码放入此文件 └── requirements.txt # 写入依赖:termcolor
__main__.py内容:
from termcolor import cprint print('hello world') cprint('hola mundo', 'red')
2. 将依赖安装到项目目录
在项目根目录执行命令,把第三方依赖安装到当前目录下(这样zipapp才能把它们打包进去):
pip install -t ./my_app -r ./my_app/requirements.txt
3. 生成包含依赖的可执行Zip归档
用标准库的zipapp工具打包整个my_app目录:
python -m zipapp my_app -o my_app.pyz
问题排查
- 你第一次生成的
.pyz无法在无依赖环境运行,是因为打包时目录里没有包含termcolor的文件,必须先把依赖安装到项目目录再打包。 - 你使用第三方工具
zipapps(注意是复数)时进入REPL,是因为未指定明确的入口点。可以通过添加-m参数指定入口模块(比如-m my_app:main,如果你的入口函数是main),或者确保项目目录下存在__main__.py作为默认入口。
生成的my_app.pyz可以直接在安装了Python的Windows系统上运行,用户只需执行:
python my_app.pyz
内容的提问来源于stack exchange,提问作者Psionman
相关产品推荐
相关产品推荐

