[英]Load Environment Variables from shell script before python task | Pycharm 2018.1 PRO
[英]Load environment variables from a shell script
我有一個文件,其中包含一些我想在python腳本中使用的環境變量
以下工作形成命令行
$ source myFile.sh
$ python ./myScript.py
從python腳本里面我可以訪問變量之類的
import os
os.getenv('myvariable')
我如何從python腳本中獲取shell腳本,然后訪問變量?
如果你說落后環境傳播,抱歉,你不能。 這是一個安全問題。 但是,python的直接源環境肯定是有效的。 但它或多或少是一個手動過程。
import subprocess as sp
SOURCE = 'your_file_path'
proc = sp.Popen(['bash', '-c', 'source {} && env'.format(SOURCE)], stdout=sp.PIPE)
source_env = {tup[0].strip(): tup[1].strip() for tup in map(lambda s: s.strip().split('=', 1), proc.stdout)}
然后,您在source_env
擁有所需的一切。
如果您需要將其寫回本地環境(不推薦使用,因為source_env
會讓您保持干凈):
import os
for k, v in source_env.items():
os.environ[k] = v
這里需要付出另一個微小的關注,因為我在這里調用bash
,你應該期望這里也適用規則。 因此,如果您希望看到變量,則需要導出它們。
export VAR1='see me'
VAR2='but not me'
您無法通過bash或shell腳本加載環境變量,它是一種不同的語言。 您將不得不使用bash來評估文件,然后以某種方式打印出變量然后讀取它們。 請參閱強制bash擴展從文件加載的字符串中的變量
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.