背景
簡單來說是整個工程有一個啟動文件托享,需要用一個const.py
文件中的參數(shù)來控制運行環(huán)境入蛆,這在Pycharm
這些IDE里面運行當(dāng)然沒問題,因為編譯器的運行環(huán)境是一個虛擬的env
然想。我在Jenkins
的機器上運行時奕枝,無法通過單獨的case.py
文件修改const.py
文件的值框咙,使用global
變量也不行餐胀,故采用設(shè)置環(huán)境變量的方法咽筋。
實施
設(shè)置系統(tǒng)環(huán)境變量
os.environ['環(huán)境變量名稱']='環(huán)境變量值' #其中key和value均為string類型
os.putenv('環(huán)境變量名稱', '環(huán)境變量值')
獲取系統(tǒng)環(huán)境變量
os.environ['環(huán)境變量名稱']
os.getenv('環(huán)境變量名稱')
踩坑
以上方法晌块,推薦用os.environ
爱沟,因為使用os.putenv()
并不會真正改變os.environ
字典里面的環(huán)境變量,即某些平臺無效(比如MacOS匆背,我就是在這里一直設(shè)置不成功)呼伸,但是使用os.environ
有一個潛在的隱患:在一些平臺上,包括FreeBSD和Mac OS X钝尸,修改environ會導(dǎo)致內(nèi)存泄露括享。詳情見Python API。
我們設(shè)置的環(huán)境變量只存在于當(dāng)前的python shell中(設(shè)置成功后用print os.environ['環(huán)境變量名稱']或printos.getenv('環(huán)境變量名稱')
查看)珍促。也就是說铃辖,比如Windows環(huán)境下,在"我的電腦"——“屬性”——“高級系統(tǒng)設(shè)置”——"高級"——"環(huán)境變量"中找不到剛才設(shè)置成功的環(huán)境變量猪叙。為什么會這樣呢娇斩,如何用Python真正設(shè)置環(huán)境變量?
如果你所在的開發(fā)環(huán)境是windows的操作系統(tǒng)穴翩,import _winreg模塊將環(huán)境變量寫入注冊表犬第,再廣播WM_SETTINGCHANGE消息,可參考實例芒帕;如果你所在的開發(fā)環(huán)境是Linux的操作系統(tǒng)歉嗓,使用linux命令,在bash_profile文件中添加環(huán)境變量后副签,使其生效即可遥椿。