用Pyinstaller为Python程序打包可执行文件
2020年11月23日 - 由Bo 0 评论 1117 阅读
当写好了Python程序后,需要发给需求者使用,我们可以用Pyinstaller来将python程序打包为独立的可执行文件,这样就不用再安装python和一系列的三方包。
与其他第三方包一样先安装:
pip install pyinstaller
为了看到效果,先创建一个debug.py文件,并填入:
while True:
text = input("Please input your keyword: ")
if text == "q":
print("exit...")
break
else:
print(f"===={text}====")
然后运行
pyinstaller -F debug.py
在完成后,当前目录下会生成build文件夹和dist文件夹和一个spec文件,其中在dist里的便是我们需要的可执行文件。
当我双击./dist/debug时,便会弹出新窗口并可交互,和运行独立的python脚本一样。
可以再试下有交互界面的程序,新建with_ui.py,填入
import wx
app = wx.App()
frm = wx.Frame(None, title="Hello World")
panel = wx.Panel(frm)
label = wx.StaticText(panel, pos=(20, 20), size=(40, 60))
label.SetLabel("This is a wxpython UI")
frm.Show()
app.MainLoop()
当程序有界面时,需要额外指定-w,也可以指定-i更换图标
pyinstaller -F -w with_ui.py -i ~/Downloads/sample.icns
当我双击./dist/with_ui时,便可看到界面了。
常用的参数有:
-F, --onefile: 生成单个可执行文件
-D, --onedir: 生成包含多个文件的一个目录
-w, --windowed, --noconsole: 展示界面
-c, --nowindow, --console: 命令行窗口无界面
-i, --icon: 更换图标
icons可以推荐https://icons8.com/和https://www.iconfont.cn/
转换ico和icn推荐https://findicons.com/convert
有个需要注意的地方:在Mac上编译为app不会被报警,但是在windows上编译为exe后时常会被杀毒软件报警说有木马,在windows上编译exe记得加上签名,另外注意一下杀毒软件的策略,windows上暂没有找到合适的解决方法。
https://stackoverflow.com/questions/44377666/pyinstaller-exe-throws-windows-defender-no-publisher