以pywebview为例, 在pycharm 环境下用 pyinstaller 打包 for windows
为了让我们写好的程序,能在其他未安装 python 的电脑上运行,
需要把代码打包成可执行档,并且要包括运行时的程序库
秉持著「恰到好处」的原则,我们不深入研究所有的 pyinstaller 功能,而是只说明到我们需要及相关的功能
怎麽安装 pywebviw 跟 pyinstaller 就不展开,直接看结果
选对解译器,才能确定有没有安装成功,pywebview 跟 pyinstaller 是这次主角,
接下来我们在pycharm 里面把 pyinstaller 设置为外部工具,这样方便以後直接执行打包,才不用每次打包都要叫出 console 来打指令。
看图说明
首先打开 External Tools , 从 File/Settings 打开上图,选择 External Tools, 然後按「+」号。
Name 你叫这个外部工具为什麽
Group 就只有 External Tools 一个选项可以选
Description 就是你对这个外部工具的说明或是描述
再来是重点
Program 我们要的是 pyinstaller , 所以要找到 pyinstaller 的安装路径
Arguments 打包时的参数, 我们不增加难度,直接散包能拿到别台电脑运行,所以指定要打包的源码档案 demo_01.py
详细的内容, 如下
--add-data "Microsoft.Toolkit.Forms.UI.Controls.WebView.dll;./" --add-data "Microsoft.Toolkit.Forms.UI.Controls.WebView.LICENSE.md;./" demo_01.py
然後这两个档案的位置在 site-packages/webview/lib/ 原始的档案在你安装 pywebview 时就有了
Working directory 工作目录,打包後目标存放的路径
设置完成按 ok
打包前有个小小的动作要做,就是复制 webrowser的dll档案,按照你的系统版本分别为
32位 WebBrowserInterop.x86.dll
64位 WebBrowserInterop.x64.dll
这两个动态连结程式库是打包必要的,跟刚刚一样原始的档案在你安装 pywebview 时就有了, 位置在 site-packages/webview/lib/
看图说明几个手动复制的档案
上面红框的档案是我已经复制好的,下面红框是原始档案,我使用 x86的版本也就是32位的版本,原因是我希望在32位的 windows 上也要能运行
如果这里出错时是路径的错误,请注意两个部份
一、刚刚在 Argument 的设置
二、打包时选取了哪个档案或路径
这个用两张图,再说明下档位置的关系
这里我直接指定档案名称不带路径
然後一键打包时,我先点选同一个档案
这样就能保证路径不出错。当然,想要挑战高难度的同学, 请自便。
打包後如图,多出 build 跟dist 两个文件夹,以及 demo_01.spec
build 目录是在放打包过程的暂存档案
dist 目录是打包的结果,这是我们目前所关心的
demo01.spec 是 pyinstaller 打包时使用的各项参数
所以我们打开 dist/demo_01/demo_01.exe ,双击运行.
两个问题,我们先试著解决一下。
第一个问题,pywebview 指定的页面没有载入,原来我们还没把页面跟相关资源复制过来,把资源复制到 dist 下,完成。
第二个问是,多一个黑色 console 心情不美丽,参数加 -w 不显示 console 这里要注意的是在某些情况下不显示 console 的话,是不能运行的
具体是什麽情况这里暂时不展开
打包完成後,再检查一下页面相关别忘记复制了。执行 demo_01.exe
很好, 打包完成!
把 dist 文件夹整个复制到其他电脑,试试能不能运行。
简单完成这次的打包目标。