gpt4 book ai didi

python:os.getenv 不返回 sudo?

转载 作者:太空狗 更新时间:2023-10-29 11:17:32 25 4
gpt4 key购买 nike

我通过添加 export LIBRARY_PATH=/usr/local/cuda/lib64:$LIBRARY_PATH 在 /etc/bash.bashrc 中设置了环境变量 LIBRARY_PATH 最后。

当我尝试从 python 获取环境变量时:

ipython
import os
print os.getenv('LIBRARY_PATH')

一切正常,它打印 /usr/local/cuda/lib64:

但是当我用 sudo 调用 ipython 时:

sudo ipython
import os
pront os.getenv('LIBRARY_PATH')

我一无所获。我想这是关于跨用户的环境变量,但细节是什么?我在 /etc/bash.bashrc 中设置了 LIBRARY_PATH,据说这是“系统范围的 bashrc 文件”。

那么我怎样才能在 python 中使用 sudo 获得正确的环境变量呢?

最佳答案

如果您希望 sudo 传递环境变量(这通常被认为是安全隐患),请使用 sudo -E

请注意,是 bash 执行 bashrc 文件中的命令。 ipython 不是 bash,显然,sudo 不会启动 shell 进程,更不用说 bash 进程了,只是为了运行您请求它运行的命令。因此,您的 bashrc 文件都不会被 sudo 命令或 sudo 子进程执行。当然,你可以告诉 sudo 运行一个 bash 进程:

sudo bash -c ipython

但是,如果 bash 检测到它正在 sudo 进程中运行,则它不会执行启动文件。

有关 sudo 如何清理环境的更多信息,请键入 man 5 sudoers 并跳至 命令环境 部分。

关于python:os.getenv 不返回 sudo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42477587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com