【问题标题】:Why do the environment variables set in command prompt have no effect when I start Spyder为什么我启动Spyder时命令提示符设置的环境变量没有效果
【发布时间】:2015-07-01 12:58:24
【问题描述】:

我正在使用适用于 Python 的 Spyder Anaconda IDE。我正在 Spyder IDE 中编写代码,需要为 Theano 库设置几个环境变量($CPATH、$LIBRARY_PATH 和 $LD_LIBRARY_PATH)。

我正在使用命令启动 Spyder

sudo ./spyder 

它开始正常。即使我在我的

中设置了环境变量
/root/.bashrc

文件,代码仍然无法接受路径,如果我尝试打印

print os.environ["LD_LIBRARY_PATH"]

它会引发 KeyError。

我用普通用户尝试了以上所有方法,但仍然失败。如何让 Spyder IDE 能够查看上述路径中的文件以及在 Spyder 中的何处设置它们?

【问题讨论】:

  • 试试 sudo env。这会将 spyder 的问题与 shell 未运行的问题分开 .bashrc
  • .bashrc 仅适用于交互式 shell
  • 尝试直接在代码中声明变量:os.environ["LD_LIBRARY_PATH"]="exact/path/to/folder"
  • 你能在 sudo 之前添加环境变量吗?或者在调用 spyder 之前运行一个设置它们的脚本。或者运行 sudo -i ,然后运行 ​​spyder。
  • 这可能是一个愚蠢的问题,但是为什么你需要以 root 身份运行你的编辑器呢?特别是,将LD_LIBRARY_PATH 保留为环境变量可能比您想象的更严重的安全隐患,我想知道您是否需要它?

标签: python environment-variables spyder theano


【解决方案1】:

您需要告诉sudoers 文件在使用sudo 命令时要保留哪些环境变量。

编辑 sudoers 文件运行。

sudo visudo

然后将以下行添加到它的末尾。

Defaults env_keep = "LD_LIBRARY_PATH CPATH LIBRARY_PATH"

然后export 你的变量。

export LD_LIBRARY_PATH="/path/to/library"

现在你应该可以运行它了。

更多信息可以在这里找到How to keep Environment Variables when Using SUDO

【讨论】:

  • 我正在尝试这个。
  • 你能帮我追加更多的环境变量来保留吗?我应该在引号内留一个空格并添加更多吗?我有 3 个
  • 我正在尝试这个。
  • 这通常是一个非常糟糕的建议。 sudo 不会保存这些环境变量,因为保留它们是一个很大的安全风险。首先应该是创建一个包装脚本或不以 root 身份执行 IDE,not 允许 sudo 保留不安全的环境变量。
猜你喜欢
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 2019-06-22
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多