当前位置: 首页 > 面试题库 >

如何在Gnome中使用distutils或setuptools分发Python包的.desktop文件和图标?

路欣荣
2023-03-14
问题内容

目前,我正在使用自动工具来构建/安装和打包我的项目,但是我真的很想迁移到感觉更“ 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何处放置了egg文件,而不是在指定的文件夹中,因此台式机外壳无法访问它们。

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

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

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



 类似资料:
  • 问题内容: 使用setuptools时,无法让安装程序提取任何文件。我读过的所有内容都表明,以下是正确的方法。有人可以请教吗? 数据文件的位置在哪里。 问题答案: 我知道这是一个老问题,但人们发现这里通过谷歌自己的方式: 是低了下来,肮脏的谎言。它仅在构建 二进制 软件包()时使用, 而 在构建源软件包()时不使用。当然,这是荒谬的-人们希望构建源代码分发将导致文件的集合,这些文件可以发送给其他人

  • 问题内容: 我正在尝试向Pythondistutils添加安装后任务,如如何使用简单的安装后脚本扩展distutils中所述。。该任务应该 在已安装的lib目录中 执行Python脚本。该脚本生成安装的软件包所需的其他Python模块。 我的第一次尝试如下: 这种方法有效,但是据我所知有两个缺陷: 如果用户使用的Python解释器不是从中选择的,则将使用 其他 解释器执行安装后脚本,这可能会引起问

  • 问题内容: 您可以简单地从python安装中删除目录,还是必须删除任何残留文件? 问题答案: 它取决于您传递给的选项以及系统/软件包中distutils配置文件的内容。我不相信会以这些方式在指定目录之外修改任何文件。 值得注意的是,distutils目前没有卸载命令。 还值得注意的是,删除程序包/鸡蛋可能会导致依赖关系问题,例如尝试减轻此类问题的实用程序。

  • 问题内容: 情况 我正在尝试将开放源代码库移植到Python3。(SymPy,如果有人想知道的话。) 因此,2to3在为Python 3构建时,我需要自动运行。为此,我需要使用。因此,我需要移植当前的系统(根据)是。 问题 不幸的是,我不知道什么是这些模块-之间的区别。该文档最好是粗略的,因为它们似乎是彼此的一个分支,旨在在大多数情况下兼容(但实际上不是全部)……等等。 问题 有人可以解释差异吗?

  • 问题内容: 我如何实际创建使用git repo标签进行版本控制,使用和的python软件包的发行版/发行版? 有关所需的基本设置和配置,有很多信息: SetupTools文档-setup()和setup.py配置 Python打包用户指南-安装软件包 PBR v3.1.1文档 StackOverflow:如何使用通过和生成的版本信息 但是有关如何实际创建发行版的简单信息在哪里? 即我正在寻找找到带

  • 我希望使用SetupTools将一个包部署到PyPi。但是,包的核心部分实际上是用Fortran编写的,我正在使用f2py用Python包装。基本上,项目的结构如下所示: null myfunc.py模块导入hello.so(),然后myfunc.py中的函数可以使用该模块。这在我的机器上很好用。 然后我在我的Ubuntu上尝试了标准的setuptools安装:,结果安装得很好。但不幸的是,在导入

  • 问题内容: 我正在使用python-mosquitto订阅我的MQTT代理,该代理支持文件类型上传。从命令行在Mosquitto上使用- f标志可以很好地使用它。但是,当我从python脚本中进行操作时,我无法弄清楚如何使用client.publish(topic,有效负载)指定要发布的文件。 当我尝试向它扔一些奇怪的东西时,Python mosquitto给了我错误。我已经有一个文件存储在本地目

  • python3 setuptools 如何打包main.py 供其他 py项目调用? main依赖app里面的enit.py 和同级ss.py文件 这个setup.py如何写? 希望大佬帮忙解决!