【发布时间】:2025-11-29 02:05:02
【问题描述】:
我有一个 systemd 服务,它定期读取 root 拥有的文件的第一行,对其进行转换,然后使用 png_util:
import png_util
with open('root-owned-file', 'r') as f:
f.read()
...rest of logic...
现在,当 systemd 守护进程启动时,它无法访问我使用 pip (pip install png_util) 安装的 png_util 库,因为它只会为安装用户安装它。当我使用 sudo 启动脚本时,也会发生这种情况:
ModuleNotFoundError: No module named 'png_util'
如果我读取我拥有的文件并以我的用户身份正常执行脚本,一切正常。
systemd 服务:
[Unit]
Description=PNG
[Service]
ExecStart=/tmp/pngreader
[Install]
WantedBy=multi-user.target
技巧是简单地使用 pip install --user root 然后以某种方式为 root 用户设置 PYTHONPATH 吗?
【问题讨论】:
-
为什么不使用 virtualenv?
-
你试过 su 到 root 然后在 root 下 pip install 吗? Root 使用与用户不同的工作空间。
-
Virtualenv 是更好的选择。我的评论只是基于您询问 root 用户这一事实。