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

时间:2009-02-01 21:18:01

标签: python packaging setuptools gnome distutils2

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

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

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

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

4 个答案:

答案 0 :(得分:4)

我设法让它发挥作用,但我觉得更像是解决方法

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

我使用了以下setup.py文件(完整版本为here):

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']
  }
)

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

要解决此问题,我使用了以下setup.cfg文件:

[install]
single-version-externally-managed=1
record=install.txt

这很有效。两个数据文件都在正确的位置创建,而.desktop文件由Gnome识别。

答案 1 :(得分:1)

总的来说,是的 - 在构建Python项目时,一切都比autotools好。

到目前为止,我对setuptools有很好的经验。但是,将文件安装到固定位置并不是setuptools的强项 - 毕竟,它不是为Python应用程序构建安装程序,而是分发Python库。

对于安装非应用程序数据文件(如图像,UI文件等)但提供操作系统集成的文件,最好使用真正的打包格式(如RPM或deb)。

也就是说,没有什么可以阻止你使用基于setuptools的构建过程和一个小的make文件来将所有内容安装到正确的位置。

答案 2 :(得分:1)

您可以尝试使用python-distutils-extraDistUtilsExtra.auto模块自动supports .desktop文件,以及Glade / GtkBuilder .ui文件,Python模块和脚本,misc数据文件等。

它应该与Distutils和Setuptools一起使用。

答案 3 :(得分:1)

我创建了https://pypi.python.org/pypi/install-freedesktop。它为gui_scripts入口点自动创建.desktop文件,可以通过设置参数进行自定义,并支持--user以及系统范围的安装。与DistUtilsExtra相比,它的范围更窄,恕我直言更加pythonic(显式优于隐式)。