Python打包EXE并隐藏CMD窗口:PyInstaller避坑与subprocess调用技巧
本文详解使用PyInstaller将Python脚本打包为EXE文件并隐藏CMD命令窗口的方法。针对打包后隐藏窗口执行CMD命令报错的问题,推荐使用subprocess模块替代os.system。同时提供解决打包后程序一闪而过、文件体积过大、图标不显示等常见问题的具体解决方案,包括修改导入方式和路径处理技巧。
Python打包EXE并隐藏CMD窗口执行问题解析
在虚拟环境中安装PyInstaller工具。
pip install pyinstaller 执行打包EXE的具体命令(网络上相关教程众多)。
# 打包1个py文件,并隐藏执行窗口
pyinstaller -F -w main.py
# 打包1个py文件(-F),并隐藏执行窗口(-w),替换exe的ico图标(-i img.ico)
pyinstaller -F -w -i img.ico main.py 上述打包方式会将各类依赖库以源文件形式保存至文件夹中,通常情况下,我们更希望生成单一的EXE文件。
将文件夹内所有依赖库合并打包至单个EXE文件中:
# 合并到一个exe内(--onefile),替换exe图标(--icon=img.ico),py源文件(main.py),隐藏执行(-w)
pyinstaller --onefile --icon=img.ico main.py -w注意:当把所有依赖库打包进一个EXE且以隐藏CMD窗口方式执行时,可能会引发错误导致程序无法正常运行,因此需要采用以下方法解决。
使用subprocess模块来执行CMD命令,这种方式可有效避免程序报错。
import subprocess
cmd = '你的CMD命令'
res = subprocess.call(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) Python打包EX程序避坑指南:无环境也能运行小程序
首先
在CMD命令行中安装pyinstaller包。
首先安装转换工具pyinstaller:需打开CMD,然后在CMD中输入一行命令即可完成。
pip install pyinstaller若觉得安装速度过慢,可添加国内镜像源下载(个人习惯使用豆瓣镜像)。
pip install -i https://pypi.douban.com/simple/ pyinstaller常用源镜像列表:
1.清华:https://pypi.tuna.tsinghua.edu.cn/simple 2.阿里云:http://mirrors.aliyun.com/pypi/simple/ 3.中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 4.华中理工大学:http://pypi.hustunique.com/ 5.山东理工大学:http://pypi.sdutlinux.org/ 6.豆瓣:http://pypi.douban.com/simple/
在CMD中输入打包成EXE的命令。
随后在CMD中将路径跳转至Python代码所在目录,然后输入以下命令,即可将Python代码转换为
EXE文件,并生成一个名为dist的文件夹,在该文件夹中可以找到刚打包完成的EXE文件。
pyinstaller -F xxxx.py(要打包的py文件)
pyinstaller -D xxxx.py(要打包的py文件)功能参数注释:
| 功能 | 注释 |
|---|---|
| -F | 打包成一个文件 |
| -D | 打包成一个文件夹 |
| -n | 重新命名 |
| --noconsole | 去掉cmd命令窗口 |
| -i | 加入图标,图标需要是ico格式 |
打包示例:
1.打包时修改文件名
2.运行时不显示命令窗口
3.更改游戏图标
pyinstaller -F -i label.ico main.py -n 扫雷小游戏 --noconsole
若遇到问题请参考下方说明
(1)程序一闪而过怎么办?
原因:打包的源码或运行环境存在异常。
解决办法:打包生成带有命令窗口的EXE,并在CMD中运行该EXE,若运行不成功会显示报错信息,根据报错信息进行修改。
(2)打包后的文件体积过大怎么办?
原因:在Python导入包时,将包的全部函数打包进了EXE。
解决办法:需在代码中更改导入方式,例如将import sys改为from sys import exit。
(3)缺少相关素材文件。
将代码中所有涉及素材的文件路径改为绝对路径(适用于本机运行)。
将相关素材路径改为相对路径,并将所有素材与EXE文件放置于同一文件夹下(适用于移植EXE)。
(4)关于图标的ICO文件如何转换?
可通过该网址将图片转换为ICO图标 http://www.bitbug.net/
(5) 图标加载后不显示怎么办?
刷新界面或将EXE文件复制粘贴至其他路径下即可看到效果。
(6)pyinstaller --help命令详解。
关于pyinstaller功能最全面的解释,可直接在CMD中使用该命令获取:
pyinstaller --help打包完成后,即可将程序分发给目标用户,无需Python环境即可直接运行小程序!赶紧将小程序打包分享给
总结
以上为个人经验分享,希望能给大家一个参考,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









