如何在Gnome中发布Python包的`.desktop`文件和图标(带有distutils或setuptools)?

Mag*_*nus 9 python packaging gnome setuptools distutils2

目前我正在使用自动工具来构建/安装和打包我的项目,但我真的想转向感觉更"pythonic"的东西.

我的项目包括两个脚本,一个模块,两个glade GUI描述和两个.desktop文件.它目前是一个纯粹的python项目,虽然很快就会改变.

看看setuptools,我可以很容易地看到如何处理除.desktop文件之外的所有内容; 他们必须最终进入特定目录,以便Gnome可以找到它们.

使用distuils/setuptools是一个好主意吗?

Bru*_*tus 5

我设法让它起作用,但对我来说感觉更像是一种解决方法

不知道处理这个问题的首选方法是什么...

我使用了以下setup.py文件(完整版在这里):

from setuptools import setup

setup(
  # ...
  data_files=[
    ('share/icons/hicolor/scalable/apps', ['data/mypackage.svg']),
    ('share/applications', ['data/mypackage.desktop'])
  ],
  entry_points={
    'console_scripts': ['startit=mypackage.cli:run']
  }
)
Run Code Online (Sandbox Code Playgroud)

启动脚本槽entry_points有效。但是data_files放置在egg文件中的位置而不是指定的文件夹中,因此桌面外壳无法访问它们。

为了解决这个问题,我使用了以下setup.cfg文件:

[install]
single-version-externally-managed=1
record=install.txt
Run Code Online (Sandbox Code Playgroud)

这有效。两个数据文件都在正确的位置创建,并且.desktopGnome 可以识别该文件。