小编给大家分享一下python将py变成exe文件的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
创新互联公司专业为企业提供花垣网站建设、花垣做网站、花垣网站设计、花垣网站制作等企业网站建设、网页设计与制作、花垣企业网站模板建站服务,10余年花垣做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
安装pyinstaller
打开cmd窗口,输入pip install pyinstaller,命令行输出successfully表示成功。
生成exe文件
一、单个py文件:
在py文件目录下,打开cmd窗口,输入pyinstall -F XXX.py,执行成功的话,会在当前目录生成一个dist文件夹,XXX.exe文件在此文件夹下。
二、多个py文件
1、将所有要执行的py文件放在一个大文件夹下(里面允许有多个文件夹)
2、命令行输入pyi-makespec main.py 或者 pyi-makespec -F main.py(main.py为Python程序的入口py文件)。
pyi-makespec main.py --> 打包之后会生成一个目录
pyi-makespec -F main.py --> 打包之后只会生成一个exe
选择一个命令即可。
3、现在文件夹下生成了一个main.spec文件和两个文件夹
4、编辑main.spec文件,找到a = Analysis(),先修改第一个参数,这里面的列表都必须是py文件
a = Analysis(['pin.py'], pathex=['F:\\python_work\\pytest\\pin'], binaries=[], datas=[], hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
如果用到了其他的py文件,就在第一个列表里面加入相应py文件的路径,如果是同级目录下,直接写文件名,如果不在同一个文件下,写完整路径。
a = Analysis(['pin.py', 'cursor_control.py'], pathex=['F:\\python_work\\pytest\\pin'], binaries=[], datas=[], hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
如果用到了非py文件需要打包,那么找到datas列表,将非py文件的路径与文件夹名写在元组里。
例如:
datas = [('C:\\project\\test\\images','images'),('C:\\project\\test\\EventLogs','EventLogs')]
datas:
第一个参数是Python中的非py类型文件的路径
第二个参数是非py文件保存此资源的文件夹名称,要和路径中的文件夹名称相同。
5、保存文件,在.spec文件路径下打开命令行,输入pyinstaller -D main.spec 或者 pyinstaller main.spec
如果在第2条中选择了pyi-makespec -F main.py ,那么此处只需要执行pyinstaller main.spec即可
6、生成的exe程序在dist文件夹中,dist文件夹里包含了整个项目所需环境,可在其他电脑中进行使用。
特别注意: 如果写了关于pyqt5界面的程序的话,在其主函数里面导入PYQT5之前需要加上如下代码
import os if hasattr(sys, 'frozen'): os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH'] from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog from PyQt5 import QtCore, QtGui, QtWidgets
看完了这篇文章,相信你对python将py变成exe文件的方法有了一定的了解,想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!