我尝试使用Spyder设置.bashrc
的环境变量;换句话说,我正在寻找一个读取我的.bashrc
的python命令。有什么想法吗?
答案 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的方式。)