gpt4 book ai didi

python - 使用 setup.py 安装 .desktop 文件

转载 作者:IT王子 更新时间:2023-10-29 00:56:26 24 4
gpt4 key购买 nike

我有一个应该可以通过 GUI 启动的 python 应用程序,因此它必须在/usr/share/applications/中有一个 .desktop 文件。该应用程序仅支持 Linux。通常,pip 将所有文件安装在一个目录中,但可以使用 data_files=[] 在 setup.py 中指定其他位置(例如 .desktop 文件)。

在这种情况下,这被认为是一个很好的解决方案,还是应该只发生在特定于发行版的包(如 .rpm/.deb/.ebuild)中?

最佳答案

是的,您可以在setup.py 脚本中定义.desktop 的安装路径。

您可以这样做,因为您知道要安装它的位置,它不是特定于发行版的。它由 Freedesktop Specififications 松散定义.

通常,桌面文件位于这些目录中:

  • /usr/share/applications
  • /usr/local/share/applications
  • ~/.local/share/applications

确实没有任何引用说明,但如果您想了解更多信息,可以查看 Desktop Entry SpecificationXDG Base Directory Specification .

所以你知道你想在 share/applications 中安装。但是在那之前的前缀呢?答案是,作为开发人员,您不必关心这些。由包装商决定。

因此,这是您在 setup.py 中执行此操作的方法。

from setuptools import setup

setup(
name = 'myapplication',
version = '0.1',
packages = ['myapplication'],
data_files = [
('share/applications', ['data/org.myapplication.desktop']),
],
)

如您所见,我们提供的目录 (share/applications) 是相对。引用 Pythons 的 writing setup script :

If directory is a relative path, it is interpreted relative to the installation prefix (Python’s sys.prefix for pure-Python packages, sys.exec_prefix for packages that contain extension modules).

多亏了这一 pip ,当打包器设置安装前缀(通常是 /usr/usr/local)时,您的桌面文件将安装在正确的位置。


顺便说一句,谈到桌面文件,一定要阅读关于 naming conventions 的部分:

... should follow the "reverse DNS" convention, e.g. org.example.FooViewer.desktop.

顺便说一句,与本页所说的相反,文件的 Exec 行中不需要绝对路径。查看系统上安装的文件,几乎没有人这样做。

grep Exec= /usr/share/applications/*.desktop

关于python - 使用 setup.py 安装 .desktop 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25284879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com