10

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

我的项目由两个脚本、一个模块、两个 glade GUI 描述和两个 .desktop 文件组成。它目前是一个纯 python 项目,尽管这可能很快就会改变。

查看 setuptools 我可以轻松了解如何处理除 .desktop 文件之外的所有内容;它们必须最终位于特定目录中,以便 Gnome 可以找到它们。

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

4

4 回答 4

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

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

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

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

这行得通。这两个数据文件都是在正确的位置创建的,并且.desktop文件被 Gnome 识别。

于 2014-06-09T09:03:00.360 回答
1

一般来说,是的——在构建 Python 项目时,一切都比自动工具好。

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

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

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

于 2009-02-01T21:31:36.697 回答
1

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

它应该适用于 Distutils 和 Setuptools。

于 2010-02-18T20:02:37.477 回答
1

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

于 2015-01-26T19:57:46.390 回答