将py文件打包成exe可执行文件
- 使用命令直接打包(不推荐)
- 使用auto-py-to-exe打包工具(推荐)
- 1)下载安装
- 2) 打开工具
- 3)将py文件打包成exe文件
- 4)关于exe运行版本问题
使用命令直接打包(不推荐)
基础命令为:pyinstaller hw.py --noconsole --hidden-import PySide2.QtXml
将hw.py换成你要打包的py文件,如果需要附加命令(如加图标或者附加文件等),可以去网上寻觅。
不推荐理由:需要记住命令内容,并需要注意不要打错,比较麻烦。
使用auto-py-to-exe打包工具(推荐)
此工具基于命令,以图形界面显示,比较好上手。Python2.7以上可用。
1)下载安装
用命令窗口安装:
pip install auto-py-to-exe
或者借用ide(pycharm),在python packages中进行安装。
2) 打开工具
打开cmd,输入auto-py-to-exe,即可打开工具。
- 脚本位置(必选):添加需要打包的py文件(主文件,附加文件将会在后面添加)
- 单文件(必选):选择打包后是一个包含很多文件的目录(其中包含exe),还是仅一个exe文件。
区别在于,当有附加文件时,单目录打包可以直接附加(或者在打包后将附加文件手动添加至文件中),exe程序可正常运行,无需修改主程序代码;单文件则需要修改主程序代码,并在打包时添加附加文件。(具体操作见后面) - 控制台窗口(必选):选择当双击打开exe程序,是否先打开命令窗口。一般正式程序发布会隐藏命令窗口,在调试期间可显示,便于找bug。
- 图标(可选):添加exe程序图标,必须为.icon格式(图片可在网上进行转换)。
- 附加文件(可选):如有附加文件且选择单文件打包,在打包前需修改代码。主程序的有关附加文件的路径代码如下:
添加一函数
#路径配置(便于auto-py-to-exe工具的打包)
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
return os.path.join(base_path, relative_path)
在需要引用路径的代码中将 文件 替换为 resource_path(“./文件”)。./为根目录,路径需要与打包时添加附件填写的路径保持一致。
self.ui = QUiLoader().load(resource_path("./hw_new.ui"))
进入工具添加附加文件,如果是整个目录需要附加也可以选择目录。路径默认为根路径,可以自己添加文件夹更换路径,需要注意的是,此路径需要与主程序中的路径保持一致。
- 高级(可选):一般用不到,我也没研究,暂且空着,后期了解后补上。
- 设置(可选):可以选择打包好后的输出路径,也可默认。其余没用到,暂且不写。
3)将py文件打包成exe文件
打开工具,添加py文件,按照需求进行配置,点击“将.py转化成.exe”,转化完成后,可点击查看打开exe程序当前所在文件夹。
4)关于exe运行版本问题
根据运行环境中不同的系统版本寻找对应版本的python,可在一台电脑上安装多个版本的python,需要哪个版本将环境变量换成该路径即可(打开cmd,输入python -V检验一下当前版本是否为想要的)。
例如:想在win7 64位下运行exe程序,需要先从网上下载python3.8.2(其他版本只要是适用win7即可),配置环境变量后打开工具,根据需要进行配置,点击转换。
转换完成后,可能无法在当前电脑打开(因为你电脑有可能不是win7),需要将程序复制粘贴至win7系统下进行点击查看。因此建议先在当前常用电脑进行调试,调试成功后再更换python版本进行正式程序的发布。
我目前也是小白一枚,如果有写的不对的地方,欢迎指正~
也欢迎大家来讨论~