Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

用Pyinstaller为Python程序打包可执行文件



当写好了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/43777106/program-made-with-pyinstaller-now-seen-as-a-trojan-horse-by-avg

https://stackoverflow.com/questions/44377666/pyinstaller-exe-throws-windows-defender-no-publisher

https://github.com/pyinstaller/pyinstaller/issues/4633

下一篇:  用Flutter做一个记账APP(一)环境搭建
上一篇:  解决wxpython提示needs access to the screen的问题

共有0条评论

添加评论

暂无评论