上一篇:https://blog.csdn.net/weixin_44345862/article/details/103914336 能解决一般的打包问题(播放歌曲的,或引入训练模型的等等 一些运行的时候需要读入外部资源的,用上一篇的方法解决不了),但我偶遇到了一个带资源的,如下图,运行时需要唤醒词文件Hey_yahboom.pmdl,直接打包的84M,且不能运行!
针对以上的有一个简单粗暴的解决办法,往后只要是能在终端用指令运行的,使用以下方法都可以打包成自动运行的可执行文件。我称之为:间接法!
新建talk.py文件(也可建一个.txt文件,保存后改后缀名为.py就行),输入以下内容:
import os
os.system(‘source ~/env/bin/activate’)
os.system(‘cd /home/pi/4mics_hat’)
os.system(‘python ns_kws_alexa_GPIO.py’)
保存,然后终端中进入此文件夹,输入:
pyinstaller -F talk.py
打包,成功后,会生成dist文件夹和内部的talk可执行文件(3.6M),如下图:
在dist文件夹下直接运行不行,会提示找不到ns_kws_alexa_GPIO.py文件,把此可执行程序拷贝到上一级目录,然后运行,一切正常,如下:
接着做桌面快捷方式,找个图标Talk.png,
新建talk.desktop,输入以下内容:
[Desktop Entry]
Name=talk
Comment=weather stock music talk and so on
Exec=/home/pi/4mics_hat/talk
Icon=/home/pi/4mics_hat/Talk.png
Terminal=true
Type=Application
Categories=Application;Development;
保存,变成如下不可编辑的快捷方式模样:
接着就可以把此快捷方式随意放到任何地方去运行它所指向的程序了。后来发现 这个方法会闪退,因缺参数,但如果直接运行talk可执行文件的话,没问题。还是考虑pyinstaller的时候,把图标加进去吧。语句如下:
pyinstaller -F -i test.ico test.py