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')
相关文章
相关标签/搜索