将bashrc的环境变量加载到python中

时间:2014-12-18 18:46:19

标签: python bash environment-variables spyder

我尝试使用Spyder设置.bashrc的环境变量;换句话说,我正在寻找一个读取我的.bashrc的python命令。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

.bashrc应自动加载到登录环境

import os

print os.environ

如果您想从bash源文件创建值的字典,理论上可以执行类似

的操作
output = subprocess.check_output("source /path/to/.bashrc;env")
env = dict(line.split("=") for line in output.splitlines() if "=" in line))
print env

答案 1 :(得分:0)

shell的启动文件是 shell的启动文件。您确实想将事情解耦,以使Python不必了解Bash语法,并且使要从Python使用的设置不会隐藏在其他实用程序的整体启动文件中。

解决此问题的一种方法是将环境变量放在单独的文件中,然后从source .bashrc到该文件。然后,当您从Python调用Shell时,如果需要,该代码可以source相同文件。

# .bashrc
source $HOME/lib/settings.sh

# Python >=3.5+ code
import subprocess
subprocess.run(
    'source $HOME/lib/settings.sh; exec the command you actually want to run',
    # basic hygiene
    check=True, universal_newlines=True)

(如果您需要与旧版本的Python兼容,请尝试使用subprocess.check_call()甚至是subprocess.call(),如果您想放弃check_变体的保护措施,而希望与所有版本兼容回到Python 2.4的方式。)