小编Iai*_*ane的帖子

有没有一种惯用的方法来使用 setuptools 安装 systemd 单元?

我正在分发一个可以导入并用作库的模块。它还附带了一个可执行文件\xe2\x80\x94,通过console_scripts\xe2\x80\x94安装,供人们使用。

\n\n

该可执行文件可以作为 systemd 服务 ( ) 启动Type=simple,以向系统提供守护进程。

\n\n

systemd 服务需要引用其行中的绝对路径ExecStart,因此我需要找出console_script安装到的位置。

\n\n

使用其他构建系统(如 CMake、autotools 或 Meson),我可以直接访问前缀,然后使用configure_file(meson) 之类的内容替换@PREFIX@in foo.service.in,然后将生成的单元安装到$prefix/lib/systemd/system/.

\n\n

我只是不知道如何使用安装工具来做到这一点。里面的setup.py,sys.prefix设置为python 的 prefix,这不是同一件事。我尝试过覆盖install_datainstall,但这些方法都有各种问题,例如通过 构建轮子时损坏pip,或者卸载时留下文件。(当我们没有在系统范围内安装服务时,我只要不安装该服务就可以了;如果前缀不存在或/usr无论如何, systemd 将无法找到它/usr/local。)

\n\n

有人向我指出一个网站,该网站说您不应该使用 setuptools 执行此操作

\n\n
\n

顺便说一下,请注意,这种数据文件封装意味着您实际上无法将数据文件安装到用户计算机上的某个任意位置;这是一个功能,而不是一个错误。

\n
\n\n

这听起来像是我在这里违背了原则。我真的在寻找指示或例子来告诉我我应该在这里做什么。如果那是“不使用安装工具”,那很好,但欢迎就首选的东西提出建议。

\n

python distutils pip setuptools

9
推荐指数
1
解决办法
1841
查看次数

标签 统计

distutils ×1

pip ×1

python ×1

setuptools ×1