我正在分发一个可以导入并用作库的模块。它还带有一个可执行文件-通过console_scripts
安装-供人们使用。
可以将该可执行文件作为系统服务( 绝对路径Type=simple
)启动,以向系统提供守护程序。系统服务需要在它们的ExecStart
行中引用console_script
的安装位置。[使用其他构建系统,例如CMake,自动工具或Meson,我可以直接访问前缀,然后使用configure_file
(介子)之类的东西替换@PREFIX@
中的foo.service.in
,然后将生成的单元安装到$prefix/lib/systemd/system/
。
我只是不知道如何使用setuptools来做到这一点。在setup.py
中,sys.prefix
设置为
python的前缀
,这不是同一回事。我尝试覆盖install_data
和install
,但是这些方法都有各种问题,例如通过pip
构建轮子时会损坏,或者在卸载时将文件留在原处。 (我可以确定的是,当我们不在系统范围内安装时,不安装该服务;如果前缀不是/usr
或/usr/local
,则systemd将无法找到它。)有人指着我at a website which says that you're not supposed to do this with setuptools:顺便说一下,数据文件的封装意味着您实际上无法将数据文件安装到用户计算机上的任意位置;这是一个功能,而不是错误。听起来我只是在这里反对。我真的在寻找指针或示例来告诉我我在这里应该做什么。如果那是“不要使用setuptools”,那就很好-但是欢迎您提供有关首选内容的建议。
我正在分发一个可以导入并用作库的模块。它还带有一个通过console_scripts安装的可执行文件,供人们使用。该可执行文件也可以以...
setuptools