如何在 Gnome 中分发 Python 包的“.desktop”文件和图标(使用 distutils 或 setuptools)?
-
20-08-2019 - |
题
目前,我正在使用自动工具来构建/安装和打包我的一个项目,但我真的很想转向一些感觉更“Pythonic”的东西。
我的项目由两个脚本、一个模块、两个 Glade GUI 描述和两个 .desktop 文件组成。它目前是一个纯 python 项目,尽管这可能很快就会改变。
查看 setuptools,我可以轻松了解如何处理除 .desktop 文件之外的所有内容;它们必须位于特定目录中,以便 Gnome 可以找到它们。
一开始使用 distuils/setuptools 是个好主意吗?
解决方案
我设法得到这个工作,但它有点感觉对我来说更像是一个的解决方法的
不知道该怎么来处理这个问题的最佳方法...
我用下面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
文件由侏儒识别。
其他提示
在一般情况下,是的 - 一切都构建Python项目时比自动工具更好
我有一个至今setuptools的好经验。但是,安装文件到固定的地点不是setuptools的的实力 - 毕竟,它不是建立installaters的Python应用程序,但分发Python库
有关的安装其不是应用程序数据文件(如图像,UI文件等)的文件,但提供集成到操作系统中,你是使用实际的包装形式(如RPM或DEB)更好。
这是说,没有什么可以阻止你不必基于setuptools的构建过程,并安装到一切应有的地位一小make文件。
您可以尝试使用 python-distutils-额外. 。这 DistUtilsExtra.auto
自动模块 支持 .desktop 文件,以及 Glade/GtkBuilder .ui 文件、Python 模块和脚本、杂项数据文件等。
它应该可以与 Distutils 和 Setuptools 一起使用。
我创建 https://pypi.python.org/pypi/install-freedesktop 。它会自动为gui_scripts入口点,它可以通过设置参数进行自定义创建.desktop文件,并且支持--user
以及整个系统的安装。相比DistUtilsExtra
,它在范围更窄和IMHO更Python(显式优于隐式)。