我想將我的憑證保存在gitignored的文件(config_vars.env)中。 然後,我想開始我的項目,並將這些憑據設置爲環境變量,因爲我的程序使用os.environ.get('DB_NAME')
等。腳本運行時設置虛擬環境變量?
所以我想在我的腳本運行時設置這些環境變量,然後在程序停止運行時刪除它們。
我可以從字面上使用python或bash設置它們,然後在退出時取消設置它們。但是這並不理想,因爲如果我的程序崩潰了,環境變量就會留在那裏。
理想情況下,我可以自動將它們設置在虛擬環境中,只有我的進程可用,並且當進程停止運行時,env變量消失。
有什麼辦法可以在原生python中做到這一點?我已經研究過像click或dotenv for python這樣的東西,但是沒有其他方法嗎?
這裏是我到目前爲止有:
import os
import subprocess
def bash_command():
#not good
#subprocess.Popen(cmd, shell=False, executable=".\git-bash.exe")
#os.popen('setenv a b')
subprocess.call("config_vars.sh", shell=False)
print(os.environ.get('DB_NAME')) # prints None because the env var dies with bash
import time
time.sleep(5) # delays for 5 seconds
bash_command()
和config_vars.sh是:
export ENV_FILE=env/config_vars.env
echo $DB_NAME
呼應命令顯示它的工作,但在bash過程結束,除去環境變量(或整個虛擬環境),python進程繼續訪問而不訪問它。
所以問題是:如何設置當我的python進程死亡時死亡的環境變量?
DB_NAME在哪裏?文件env/config_vars.env中的 –
我認爲它是「export DB_NAME ...」 –
除非您執行'source env/config_vars.env',否則DB_NAME根本不會由該腳本設置。 –