PYTHONPATH 不适用于 GNU/Linux 上的 sudo(适用于 root) [英] PYTHONPATH not working for sudo on GNU/Linux (works for root)

查看:40
本文介绍了PYTHONPATH 不适用于 GNU/Linux 上的 sudo(适用于 root)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

适用于 root,sudo 是问题所在.阅读下文.

Works for root, sudo is the problem. Read below.

我有一个包含我自己的库的目录,例如我的 Python 库位于 /home/name/lib/py.
通过将以下行添加到 /etc/bash.bashrc,我已将此目录添加到所有用户(包括 root)的 Python 的 PATH:

I have a directory with my own libraries, e.g. my Python libraries are located at /home/name/lib/py.
I've added this directory to Python's PATH for all users (including root) by adding the following line to /etc/bash.bashrc:

export PYTHONPATH=$PYTHONPATH:/home/name/lib/py

它适用于所有用户(包括 root).但它不适用于 sudo.有什么办法可以让 sudo 使用 /etc/bash.bashrc?

It works for all users (including root). But it doesn't work for sudo. Is there any way I can make sudo use /etc/bash.bashrc?

更多信息:

我已将 PYTHONPATH 添加到 sudoers 文件中,如下所示:Defaults env_keep += "HOME PYTHONPATH".它不工作.

I've added PYTHONPATH to sudoers file like so: Defaults env_keep += "HOME PYTHONPATH". It sitll doesn't work.

env | grep PYTHON:
    PYTHONDONTWRITEBYTECODE=1
    PYTHONPATH=/home/name/lib/py

sudo env | grep PYTHON:
    PYTHONDONTWRITEBYTECODE=1

sudo echo $PYTHONPATH:
    /home/name/lib/py

推荐答案

在我的案例中的修复是从 sudoers 中删除 Defaults !env_reset.

The fix in my case was to remove Defaults !env_reset from sudoers.

但是,我必须在 sudoers 中保留 Defaults env_keep += "PYTHONPATH".
我实际上已经添加了 Defaults env_reset(它会重置环境变量),但由于 env_keep,它仍然有效.

But, I had to keep Defaults env_keep += "PYTHONPATH" in sudoers.
I've actually added Defaults env_reset (which resets environment variables), but it still works because of env_keep.

看起来 env_keep!env_reset 相互冲突,但这只是一个猜测.

It seems that env_keep and !env_reset conflict with eachother, but that's just a guess.

所以,整个过程:

  1. 添加 export PYTHONPATH=/your/custom/path~/.bashrc/etc/bash.bashrc
  2. PYTHONPATH 添加到 sudoers 文件中的 Defaults env_keep += "ENV1 ENV2 ..."
  3. 从 sudoers 文件中删除 Defaults !env_reset(如果存在)
  1. add export PYTHONPATH=/your/custom/path to ~/.bashrc or /etc/bash.bashrc
  2. add PYTHONPATH to Defaults env_keep += "ENV1 ENV2 ..." in sudoers file
  3. remove Defaults !env_reset from sudoers file if present

这篇关于PYTHONPATH 不适用于 GNU/Linux 上的 sudo(适用于 root)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆