Python,environ解惑

最近又遇到了對環境變量讀取的問題,之前的學習很快會忘記~
仍是寫篇博客稍微記錄下比較好 python

首先咱們都應該知道在日常的開發中咱們常常會配置一些系統環境變量
不管是windows系統或者是linux系統,好比:linux

# Windows
set test=123
# Linux
export test=123

再而咱們在進行web開發的時候也會遇到各類,變量的控制
好比導入開發(default)和生產環境(prod)不一樣的環境變量git

DEBUG=True
SECRET_KEY='abcddddd'
ALLOWED_HOSTS='*'
MAIL_USERNAME=xxxx@xx.com
MAIL_PASSWORD=abcdefg

這裏記錄一下開發時常常用到的方法。github

直接export/set

即在咱們運行咱們項目以前,直接利用export的方式導入咱們須要的環境變量
而後在項目中使用os導入web

# shell命令行
export test=123 # **注意這裏沒有空格**

# 項目中
import os
os.environ.get('test')

如下的各類方式也是間接利用了export或者相似思想docker

python-dotenv

python-dotenv githubshell

從.env文件中讀取鍵值對,並將它們添加到環境變量中windows

pip install -U python-dotenv # 安裝
env.dotenv_path = '/opt/myapp/.env' # 指定文件

官方示例:
iDIMin.md.pngbash

environs

environs githubapp

官方示例:
iDIBz6.md.png

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')
相關文章
相關標籤/搜索