zoukankan      html  css  js  c++  java
  • Python,environ解惑

    最近又遇到了对环境变量读取的问题,以前的学习很快会忘记~
    还是写篇博客稍微记录下比较好

    首先我们都应该知道在平常的开发中我们经常会配置一些系统环境变量
    不论是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

    python-dotenv github

    从.env文件中读取键值对,并将它们添加到环境变量中

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

    官方示例:
    iDIMin.md.png

    environs

    environs github

    官方示例:
    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')
    
  • 相关阅读:
    关于如何正确地在android项目中添加第三方jar包
    如何在asp.net页面使用css和js
    Prolog 外部不能有 DOCTYPE 声明。处理资源 'http://192.168.115.152:8082/api/EmpApi.aspx' 时出错。第 3 行,位置: 11
    怎样在iis中发布asp.net网站
    WInform 创建一个简单的WPF应用
    细说WPF数据绑定
    WPF控件模板
    DC画线
    第一部分 Mysql的基础
    链表○⇢习题集
  • 原文地址:https://www.cnblogs.com/bay1/p/10982310.html
Copyright © 2011-2022 走看看