最近又遇到了對環境變量讀取的問題,以前的學習很快會忘記~
還是寫篇博客稍微記錄下比較好
首先我們都應該知道在平常的開發中我們經常會配置一些系統環境變量。
不論是windows系統或者是linux系統,比如:
# Windows
set test=123
# Linux
export test=123
再而我們在進行web開發的時候也會遇到各種,變量的控制
比如導入開發(default)和生產環境(prod)不同的環境變量
DEBUG=True
SECRET_KEY='abcddddd'
ALLOWED_HOSTS='*'
MAIL_USERNAME=xxxx@xx.com
MAIL_PASSWORD=abcdefg
這里記錄一下開發時經常用到的方法。
直接export/set
即在我們運行我們項目之前,直接利用export的方式導入我們需要的環境變量
然后在項目中使用os導入
# shell命令行
export test=123 # **注意這里沒有空格**
# 項目中
import os
os.environ.get('test')
以下的各種方式也是間接利用了export或者類似思想
python-dotenv
從.env文件中讀取鍵值對,並將它們添加到環境變量中
pip install -U python-dotenv # 安裝
env.dotenv_path = '/opt/myapp/.env' # 指定文件
environs
docker-compose指定
env_file: .env
env_file:
- .env
在應用啟動之前自動讀取
if os.path.exists('.env'):
print('Importing environment from .env...')
for line in open('.env'):
var = line.strip().split('=')
if len(var) == 2:
key, value = var[0].strip(), var[1].strip()
os.environ[key] = value
關於區分不同環境
參考自:https://blog.csdn.net/u010180339/article/details/78682575
web開發的時候難免會有不同的環境變量,只要是可以指定文件目錄的都可以使用這種方式
以environs為例
env = environ.Env()
env.read_env('envs/.env.%s'%(env.str('PROJECT_ENV','prod')))
然后在啟動web應用的時候,我們指定相應的環境類型就行了
非常方便
PROJECT_ENV=dev python manage.py runserver
PS:當然這些庫也很多自己基本的方法,可以 進入官網探索下
比如environs對不同類型可以指定
SECRET_KEY = env.str('SECRET_KEY')
DEBUG = env.bool('DEBUG', False)
ALLOWED_HOSTS = env.list('ALLOWED_HOSTS')