Sudoer对python3不使用相同的环境

问题描述

我有一个python script1,我将其用作导入到主脚本的库。 在使用它之前,我检查它是否工作正常,我注意到当我用“ sudo”运行此script1时,找不到他使用的库之一。

sudo python3 -W ignore detector.py -d datasets -c MLP predict

enter image description here

通过稍作搜索,我发现“ sudo”没有使用与我的用户帐户相同的环境,并且有必要添加参数“ -E”,并且效果很好。

sudo -E python3 -W ignore detector.py -d datasets -c MLP predict

当我在没有“ sudo”的情况下运行script1时,它也可以很好地工作

python3 -W ignore detector.py -d datasets -c MLP predict

然后我将我的script1导入主脚本“ import script1”,并从script1调用函数之一,但从script1遇到相同的错误

问题是我的主脚本由systemctl管理,并具有root用户服务,我无法在ExecStart中使用“ -E”:

[Unit]

Description= Uplink manager with IA supervison of LORAWAN data
Wants=network-online.target
After=network-online.target  
[Service]
ExecStart=  /usr/bin/python3 -u/opt/flask_server/uplink_server/uplink_manager.py
Restart=on-failure   
[Install]
WantedBy=multi-user.target
Alias=uplink_manager.service

你能帮我吗?谢谢。

解决方法

缺少的库实际上在根环境中,但是库的版本不正确。