用Python做小工具——打包程序

本文详细介绍了如何手动将Python程序打包成EXE文件,特别是使用PyPy进行打包的过程。包括配置PyPy3环境、导入第三方库、使用zipapp库打包程序、编译标准库为pyc文件以及使用7z打包成单文件格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在前面的一章里,我们学习到了两种方法把python打包成EXE文件。但是这两种方式都是使用的Cpython作为解析器。导致其运行效率不是很高。而且这两种方法打包出来的软件还是挺大的。而pypy是无法用pyinstaller打包的。在这里我想介绍一下自己手动打包pypy的方法。在网上没有找到pypy打包的程序。因此在这里记录一下我的打包过程。里面有很多东西都是靠自己删除得来的打包得来的。因此比较麻烦。如果有更好的打包的方法,希望能够教我。谢谢大家。需要注意的是,pypy3的路径不能有中文,否则会报错的。同时需要注意的是,我的这些步骤中,难免有一些步骤是不完整的。因此报错的时候需要自己去解决。

配置pypy3环境

首先把下载好的文件解压缩:解压缩后的文件树如下,有些可以删掉的文件在后面备注了。

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         2020/4/10     15:54                include                 可删
d-----         2020/4/10     15:54                lib-python 
d-----         2020/4/10     15:54                libs 可删
d-----         2020/4/10     15:54                lib_pypy
d-----         2020/4/10     15:54                site-packages           
d-----         2020/4/10     15:54                tcl        需要重命名位lib放入到lib_pypy文件夹下
-a----          2020/4/7      6:49       36598272 libpypy3-c.dll
-a----          2020/4/7      6:49          13352 LICENSE                 可删
-a----          2020/4/7      6:49         123904 pypy3.exe               
-a----          2020/4/7      6:49         123904 pypy3w.exe              无控制台窗口的exe
-a----          2020/4/7      6:49           1142 README.rst              可删

打开cmd,切换到解压后的目录中去。运行pypy3.exe。如果能直接进入到运行界面,则表示能够正常工作了。接下来就是把第三方库导入进去。

导入第三方库

第三方库的导入有很多种方法。

第一种是直接去anaconda的第三方库内把所需的库复制出来。具体需要什么库呢。直接运行pypy.exe。弹出缺少什么库就把这个库给添加上去。

第二种是使用anaconda的pip把第三方库安装到pypy上。这里要使用anaconda的shell,使用的指令为:

python -m pip install python-can --target site-packages

第三种方法是给pypy安装上pip,然后用pip来安装。由于这里还需要安装pip,导致后续软件打包文件变大。因此这里就不使用这种方法了。安装pip的指令为以下,然后会生成一个Scripts文件夹,直接调用这个文件夹下的pip就能下载第三方库了:

pypy3.exe -m ensurepip

将第三方库与自己的程序打包一起

在安装好第三方库之后,使用pypy运行一次程序,如果能够正常工作的话,就可以进入到下一步了。将第三方库与自己的程序打包到一块去。这里用的是python自带的zipapp这个库。具体的使用方法可以百度搜索zipapp的使用方法。

将自己的程序也复制到site-packages这个文件夹内。然后创建一个新的py文件。命名为__main__.py。输入以下

from blf import *

main()

然后使用zipapp,就能生成一个pyz文件。用pypy运行这个文件。其运行效果与之前的运行效果是一样的。

pypy3.exe -m zipapp site-packages

把标准库编译成pyc

使用python的compileall库进行打包。打包的指令为:

pypy3.exe -m compileall -b 目录

然后在cmd中用del指令删除所有的py文件。用文件搜索,把所有的__pycache__文件夹删除。就能得到一个干净的运行目录了。

del /F /Q /S /*.py

把软件打包成单文件格式

这里使用的打包成单文件的方法是使用7z。首先方法是将所有运行的文件打包成一个压缩文件7z。然后用7zSfxTool.exe这个软件将其打包成exe文件。参考链接

首先使用7z将软件所需运行的软件打包成7z。需要注意的是要把压缩算法设置位LZMA。否则后面会报错

 接下来就是使用7zSfxTool.exe将这个压缩包编为exe文件。这些步骤在参考链接中已经有了。这里提一下运行软件的设置如下图。相当于打开软件会自动运行 pypy3.exe blf.pyz。

小结

这种打包方式的坏处就是软件在运行的时候要解压很多的文件。导致启动的时候速度非常慢。要达到十秒左右。当然我们也可以删除标准库里面的一些用不上的标准库,以及一些用不上的文件。把软件的体积变小。但是一个个手工删除是太麻烦了。所有需要很大的耐心

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值