当前位置: 首页 > 工具软件 > py2deb > 使用案例 >

[树莓派]基于Python树莓派deb软件打包踩坑&说明记录

戚永福
2023-12-01

项目基本开发完了,就差最后的打包成软件包,给 树莓派使用了.

deb打包教程

踩坑1 - Window系统

按照教程,需要下载build-essentialdebmake
window系统下载,emmmm…
我使用Python下载,找了半天,发现只有 essential, 而且还不对.
最后只能拿U盘将代码copy到树莓派.成功下载这2个组件.


踩坑2 - debuild命令 - qmake找不到

qmake
emmmm…我直接联想到PyQt5, 网上搜索一下,发现也有关联.
PyQt5下载我熟啊,这不前几天刚刚踩完坑.
实际发现我还是太年轻.
PyQt5 sipbuild.pyproject.PyProjectOptionException
树莓派OS包含有Python2.7和Python3.5
指定版本下载不行,换镜像重试不行,各种不行.
直到我最后看到了这个帖子的最后一行
“pip install pyqt5” gives tons of errors. Why?
使用sudo apt-get install qt5-default成功下载,
然后成功解决debuild时qmake不存在的问题.


踩坑3 - 树莓派pip下载PyQt5卡在 preparing metadata

Window上面下载的好好的,最多就因为Python版本冲突导致下载失败.
在树莓派OS上面,下载直接卡在这,1~2个小时过去还是没没反应.
这种一般都是挂了代理 或者 清空一下镜像源就好
可以尝试使用 pip3 install --verbose xxxx,
反正我是没啥用,你们可以试试
我最后还是就放在这里等,自己就好了


踩坑4 - deb安装包安装完了没反应

deb安装包已经成功打包好了.
双击运行,一切顺利
使用命令dpkg -l | grep xxxxxx 查看,一切正常,已经存在.
巴特~安装完啥反应都没有,没有桌面图标,没有菜单栏快捷方式,啥都没有.
安装了个寂寞
deb软件图标&快捷方式

图标搞定~
.desktop启动方式里面Exec命令犯难了
我改填什么命令,就可以直接启动我的软件呢?
先通过dpkg -L xxxxx命令,查看我安装好的软件位置.

踩坑5 - 打包好了,但是/usr/bin内没有执行文件 & pyinstaller构建失败

在弄桌面快件方式,弄.desktop格式文件,
但是需要Exec的路径,一般是填/usr/bin目录内.
但是我在里面根本找不到我自己已经安装成功的软件.
需要在树莓派OS环境上面使用pyinstaller将python项目进行打包.
我使用pyinstall main.py会提示FileNotFoundError: [Error 2] No Such file or directory: '/lib32’
关于这个报错,好家伙,网上正式一个相关的都没有.
最后使用的是pyinstall -F main.py成功打包,结果输出在了/dist文件夹内.


踩坑6 - 我需要将icon和.desktop移动到对应文件夹,提示权限不够.

这个问题解决办法就是 使用sudo的文件夹管理即可.
通过**/usr/share/application找到对应APP,右键-文件属性.
发现这个文件管理器名称叫
pcmanfm.desktop**
最后打开终端,输入sudo pcmanfm即可
就可以正常复制文件进入了.


踩坑7 - 程序开机自启动

这玩意简直是个大坑~~~

  • 第一个法子
    将创建好的.desktop 拷贝一份,放到etc/xdg/autostart 文件夹内.
    NO~

  • 第二个法子
    使用sudo nano /etc/rc.local命令,在exit 0 前面写上自启动的路径.
    我尝试过写 可执行文件的路径 和 main.py的路径.
    根本不行,会有各种报错.
    包括但不限于:

    • Failed to start /etc/rc.local Compatibility
    • QXcbConnection : could not connect to any X display

改一点,需要重启一下,发现没有自启动
然后使用systemctl status rc-local看为什么没成功,研究报错.
最后在一个博客 里面看到说明,说带GUI的可能不适用

  • 第三个法子
    显示隐藏文件,在 .config下面创建一个autostart
    我把.desktop放进去,还是然并卵.
    最后还是使用这个办法处理好了.
    之前不可用的原因是
    我的Exec配置执行方法,我是直接写的
    python3 /home/pi/xxx/main.py
    改成
    /usr/bin/python3 /home/pi/xxxx/main.py
    就特么OK了.
 类似资料: