前言:如何将python的.py文件打包为exe文件,以打包单独文件的简单程序和打包基于pygame库编写的多模块程序为例,以及如何处理素材文件使打包后的文件可以正常运行,还有一些总结(仅个人见解)
目录
原生编译器打包程序:
展示文件信息
1.安装pyinstaller
2控制台切换到对应路径(路径必须全英文)
3.打包程序(多文件与单文件)
pyCharm打包程序:
(通过pycharm用pyinstall打包多模块文件,以打包一个pygame写出的游戏为例子)
展示文件信息
1.在terminal-Command prompt下安装pyinstaller
2.导出依赖信息,确保虚拟环境(venv)存在需要的库
3.本地指令行输入安装指令打包为(多文件&单文件)
补充说明:
关于报错:
关于多文件与单文件
多文件形式:
单文件形式:
原生编译器打包程序:
展示文件信息
![](https://img-blog.csdnimg.cn/710e7484a2844c08948c603734e46e85.png)
![](https://img-blog.csdnimg.cn/4f0ff5d78f6b4556af4acacd3aa4add0.png)
![](https://img-blog.csdnimg.cn/c71edbe746d647468f061c1e3f505783.png)
1.安装pyinstaller
Win+R,输入cmd打开运行控制台,输入
pip install pyinstaller
2控制台切换到对应路径(路径必须全英文)
cd + 路径(非c盘使用cd/d 盘:\路径)
![](https://img-blog.csdnimg.cn/13ff4cb7a1b0469993de1925b9d49a23.png)
3.打包程序(多文件与单文件)
输入pyinstaller,会提示你指令说明
打包为多文件:
Pyinstaller –D 主程序名.py
![](https://img-blog.csdnimg.cn/5ca8f397fc234f238f6070e0ea2c6280.png)
![](https://img-blog.csdnimg.cn/58ba0478d1ae467182c53f4a0cd704a7.png)
(最后显示successfully说明打包成功)
![](https://img-blog.csdnimg.cn/51372a30146f404f9600489004d79d45.png)
(蓝线标识的文件夹是打包的配置文件,下次打包时需要删除这两个文件,dist是打包好的程序)
![](https://img-blog.csdnimg.cn/1d81ce3b79384270a2b49cec571a45dd.png)
![](https://img-blog.csdnimg.cn/10983bbe880c43d4913da7f79bfd90d8.png)
打包为单文件:
Pyinstaller –F 主程序名.py
![](https://img-blog.csdnimg.cn/ec48e24064924971ab19efcc24f33209.png)
打包好的程序放在当前文件夹dist内
![](https://img-blog.csdnimg.cn/19e929ff85124637902c179e0ca2d8cf.png)
![](https://img-blog.csdnimg.cn/fd1a4d14eb5341ee9686ccaa376f72c0.png)
pyCharm打包程序:
(通过pycharm用pyinstall打包多模块文件,以打包一个pygame写出的游戏为例子)
展示文件信息
![](https://img-blog.csdnimg.cn/b5af2d79c15f457ba417f7bc782045b0.png)
![](https://img-blog.csdnimg.cn/d533868b96324ca28458f14117d3e7e5.png)
1.在terminal-Command prompt下安装pyinstaller
![](https://img-blog.csdnimg.cn/e4aa75f07dac4241a96e2a70a30b49b1.png)
2.导出依赖信息,确保虚拟环境(venv)存在需要的库
关于解决外部导入的库的问题,只要对应的虚拟环境内存在需要的库,就可以导出;
pycharm可以将对应导入的库放到同级目录venv文件夹内,即虚拟环境,在本地模式下可以打包程序不用单独指定路径,我们可以单独导出需要的环境依赖为文本,
在本地模式下
pip freeze > reqirements.txt
然后在需要的虚拟环境下再安装环境依赖(用于不同系统)
pip install -r reqirements.txt
确保当前虚拟环境下有对应的依赖后就可以打包程序了
![](https://img-blog.csdnimg.cn/1267f561fc864fc794174ab17d3c5a84.png)
3.本地指令行输入安装指令打包为(多文件&单文件)
输入pyinstaller,会提示你指令说明
打包为多文件(在terminal > Command prompt窗口输入指令):
pyinstaller –D 主程序名.py
![](https://img-blog.csdnimg.cn/58705dcd655b4dcf943fa90ddce9d84a.png)
![](https://img-blog.csdnimg.cn/7a91b18c1496472a99f05d6b4970291d.png)
(successfully显示打包成功)
打包后的文件不包含素材,此时运行会闪退,需要将素材拖到同级文件夹下
![](https://img-blog.csdnimg.cn/9b5b01af244f427b824b2a5e994d16a4.png)
导入素材以后就可以直接运行exe了
![](https://img-blog.csdnimg.cn/6f4e1fcc3e6d48288ce3bc6b93adce90.png)
打包为单文件同上:pyinstaller –F 主程序名.py
(无论单文件还是多文件打包,都无法把素材文件打包到exe内,所以仍然需要将素材放到同级文件夹内)
补充说明:
如果用pycharm打包简单程序同原生编译器,在terminal-Command prompt窗口下输入控制台指令,安装到当前venv环境内就可以导出了
我们的程序往往不仅仅由一个文件构成,可能会包含一些依赖与素材文件,可能是图片或者音频等,我们主要关注的是主程序的代码中是否调用了这些对应的模块,或者主程序调用的模块是否调用了其他的模块,只要在主程序中调用了的模块在打包的时候会一并导入exe文件,但是如果你创建了一个模块,但是没有在主程序中被调用或者在其他模块中被调用,那么这个模块是不会导入exe文件中的。
关于素材文件,音频以及图片素材调用自外部时无法把程序封装到exe文件里,所以无论是打包为多文件还是单文件都需要把程序的素材放到同级文件夹内,这个时候你就会发现exe文件可以正确运行了
关于报错:
如果程序本身存在问题,那么打包后的程序会在打开后遇到错误时直接退出
退出的原因可能有(目前笔者我遇到的):
1.本身程序就存在问题,打包前没有解决
2.对应素材或者环境缺失
可能还会有各种各样的原因,这两项只是我自己遇到的,关于更多细节可以去官网查看pyinstaller的说明
(http://www.pyinstaller.org/)
关于多文件与单文件
多文件形式:
程序打包后保存为包含依赖等其他文件的多个文件,用打包时指定的.py命名的exe文件启动程序,当程序运行时,程序产生的临时文件以及运行的路径会在当前文件夹而不会使用临时文件夹
单文件形式:
程序打包后保存为单个打包时指定的.py命名的exe文件,当程序运行时,程序产生的临时文件会使用临时文件夹存放临时文件以及解包其他文件并以临时文件夹为指定路径
(个人见解,可能描述与说明不是很准确,如果出现错误希望广大读者们可以指正)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)