deb 打包の一夜物语

我想用 playsound 播放一段放在 ./resource/music.mp3 文件,打成包后发现在 shell 调用的时候使用的路径是 home/yourUserName/resource/music.mp3

而不是我安装在 usr/lib 路径下的 usr/lib/myApplication/resource/music.mp3,应该怎么办呢

我知道了 :smile_cat:
问了下 gpt,原来可以用 pyinstaller 解决

这个路径 /tmp/_MEIb2n9Re/resource/music.mp3 确实与 Linux 的进程有关,具体来说,它与 PyInstaller 打包的可执行文件的运行环境有关。

当你使用 PyInstaller 打包 Python 脚本时,它会将所有依赖的资源和库打包到一个单独的可执行文件中。在运行这个可执行文件时,PyInstaller 会在临时目录(通常是 /tmp)中创建一个临时工作区,将所有资源和库解压到这个临时工作区中,然后在这个临时工作区中运行你的程序。

在这个例子中,/tmp/_MEIb2n9Re 是 PyInstaller 创建的临时工作区,resource/music.mp3 是你的程序中引用的资源文件。因此,当你在可执行文件中尝试访问 resource/music.mp3 时,实际上是在访问临时工作区中的这个文件。

如果你希望在运行可执行文件时能够访问到原始项目目录中的资源文件,你需要修改你的代码,使其能够正确地找到这些资源文件。一种常见的做法是使用 os.path 模块来获取可执行文件的路径,然后根据这个路径来定位资源文件。

所以我的做法是

pyinstaller -F --add-data “resource/music.mp3:resource/” main.py

用这个命令将这个文件打包到他解压出来的临时工作区就可以了

浪费了一个晚上,我是傻逼

https://ilovebread.buzz/upload/whatcanisay-1.0.0.deb

:basketball:请门友玩
目前只有 man whatcanisay 和 whatcanisay 两个命令可以用

需要更多 idea

sudo dpkg -i whatcanisay-1.0.0.deb

可以在 linux 上一键播放牢大语音 :grin:

结论:fpm 比 dpkg 好用