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

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

问题描述

编辑:Works的根,sudo的是这个问题。阅读下文。

我有一个目录我自己的库,例如我的Python库位于 /家/名/ lib中/ PY 。结果
我已通过添加以下行 /etc/bash.bashrc 这个目录添加到 Python的PATH 为所有用户(包括root):

 出口PYTHONPATH = $ PYTHONPATH:/家/名/ lib中/ PY

它适用于所有用户(包括根)。不过,这并不sudo的工作。有什么办法可以让sudo的使用 /etc/bash.bashrc

编辑:更多信息:

我已经添加了 PYTHONPATH 来sudoers文件,像这样:默认env_keep + =HOME PYTHONPATH。它罗纳尔多,也很想不起作用。

  ENV | grep的PYTHON:
    PYTHONDONTWRITEBYTE code = 1
    PYTHONPATH = /家/名/ lib中/ PY须藤ENV | grep的PYTHON:
    PYTHONDONTWRITEBYTE code = 1须藤回声$ PYTHONPATH:
    /家/名/ lib中/ PY


解决方案

在我的情况下,修复是从sudoers文件删除默认值!env_reset

不过,我必须保持默认env_keep + =PYTHONPATH在sudoers中。结果
其实我已经加入默认env_reset (其中复位环境变量),但它仍然有效,因为 env_keep

似乎 env_keep 和海誓山盟!env_reset 冲突,但是这只是一个猜测。


所以,整个过程:


  1. 添加出口PYTHONPATH = /你/自定义/路径〜/ .bashrc中 /etc/bash.bashrc

  2. 添加 PYTHONPATH 默认env_keep + =ENV1 ENV2 ......在sudoers文件

  3. 删除默认值!env_reset 从sudoers文件如果present

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

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

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?

EDIT: More information:

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

解决方案

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

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.

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


So, the whole process:

  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的(适用于根)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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