使用zipapp打包Python程序

 1. 新建hello项目文件,新增hello.py为主程序

import time

def main():
    print("Hello World")
    time.sleep(5)

if __name__ == '__main__':
    main()

2. 在命令行工具进入hello项目文件的上一级目录(父目录),然后输入命令

python -m zipapp hello -o hello.pyz -m "hello:main"

上面命令执行当前目录下的hello子目录下的所有Python源文件打包成一个包,并通过-o选项指定生成包的文件名为hello.pyz, -m选项指定使用hello.py模块中的main函数作为程序入口。

3. 执行hello.pyz

实践项目: myapp

以下命令将Python项目代码和venv依赖包打包成myapp.pyz,可以将myapp.pyz拷贝到其他平台直接执行,不需重新配置venv。这种方式的前提是主程序名须为__main__.py, 并且含有入口函数名为main()。

cd到myapp文件夹的上一级目录(父目录),输入命令

python -m myapp -o myapp.pyz -p "myapp\venv\Lib\site-packages"

参考28.4. zipapp — Manage executable python zip archives — Python 3.6.3 documentation

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的zipapp是一个工具,可以将Python应用程序打包成一个单独的可执行文件,这个文件可以在没有Python解释器的情况下运行。 使用zipapp可以将一个Python应用程序打包成一个zip格式的归档文件,这个文件可以被解释器执行,也可以像普通的可执行文件一样执行。在打包的过程中,可以指定Python解释器版本、入口点文件等参数。 以下是一个使用zipapp打包Python应用程序的示例: ```python # 导入需要的模块 import os import sys import shutil from zipfile import ZipFile # 定义入口点文件 entry_point = '__main__:main' # 定义要打包的文件和目录 files = [ 'main.py', 'module1.py', 'module2.py', 'data.txt', 'templates' ] # 定义打包文件名 filename = 'myapp.pyz' # 创建打包目录 if os.path.exists('build'): shutil.rmtree('build') os.makedirs('build') # 复制文件到打包目录 for f in files: src = os.path.join(os.getcwd(), f) dst = os.path.join(os.getcwd(), 'build', f) if os.path.isdir(src): shutil.copytree(src, dst) else: shutil.copy(src, dst) # 打包文件 with ZipFile(filename, 'w') as zip: zip.write('build') zip.write('main.py') zip.write('module1.py') zip.write('module2.py') zip.write('data.txt') zip.write('templates') # 创建可执行文件 with open(filename, 'rb') as zip: data = zip.read() with open(filename, 'wb') as exe: exe.write(b'#!/usr/bin/env python\n') exe.write(data) # 设置可执行权限 os.chmod(filename, 0o755) # 删除打包目录 shutil.rmtree('build') print('Done!') ``` 在这个示例中,我们将一个Python应用程序打包成一个名为myapp.pyz的可执行文件。打包过程中,我们将main.py、module1.py、module2.py、data.txt和templates目录打包到了归档文件中。入口点文件为main.py中的main函数。打包完成后,我们将归档文件重命名为myapp.pyz,并且在文件头部添加了一个脚本解释器的声明,使得这个文件可以直接执行。 使用zipapp打包Python应用程序可以方便地将应用程序打包成一个单独的可执行文件,方便部署和使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值