变量管理 dotenv 的 使用

python-dotenv

安装

pip install python-dotenv   或  pipenv  install python-dotenv --skip-lock 

创建目标文件

在项目根目录下创建, (可灵活选择)
touch .env 

使用

import os
from dotenv import load_dotenv       // 1. 导包
from pathlib import Path

if __name__ == '__main__':

    load_dotenv()                   //2. 加载 .env  文件, 默认 这个文件名,默认自动 在当前工作目录下 查找
    """
    文件可以是任意一个文件,则在加载时 需 显式 添加 参数 dotenv_path 来指定 此文件的位置, 
    例如:
        env_path = Path("./modelForm_Demo01/.env")
    	load_dotenv(dotenv_path= env_path)	
    """
    courseList = eval(os.getenv("courseList"))  // 3. 通过 os.genenv(key) 来获取, 类型都为字符串
    // 获取到的字符串值, 可通过 eval()  内建函数 来转换为 对应 的 类型
    print(type(courseList))
    print(courseList[0])

Github 地址

flask 中的使用

Django-dotenv

安装

pip install django-dotenv    或  pipenv install django-dotenv  --skip-lock 

卸载 python-dotenv

pip uninstall python-dotenv

使用

  • 修改 manage.py -------, 使用 runserver 启动 Django 的 情况下

    import os
    import sys
    import dotenv                           // 1. 导包
    
    def main():
        os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'modelForm_Demo01.settings')  
        try:
            from django.core.management import execute_from_command_line
        except ImportError as exc:
    		pass
        execute_from_command_line(sys.argv)
    
    
    if __name__ == '__main__':
        dotenv.read_dotenv()                 // 2. 加载 .env 文件,默认 项目 根路径下查找,
        """
        params: 
        	dotenv : 文件 地址,例:os.path.abspath(os.path.join(os.path.dirname(__file__), '.env02'))
        	override :  如果.env中的值应该覆盖系统变量,则为True , 默认 False 
        """
        EMAIL_URL = os.getenv("EMAIL_URL")   // 3.  获取 变量 
        main()
    
  • 修改 wsgi.py 文件, ----- 使用 uwsgi 启动 Django 的 情况下

    #  具体 使用 方法 与 上面讲的 一样 
    import os
    from django.core.wsgi import get_wsgi_application
    import dotenv                                                           // 1.  导包
    
    dotenv.read_dotenv(os.path.join(os.path.dirname(__file__), '.env02'))   // 2.  加载 
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'modelForm_Demo01.settings') 
    
    EMAIL_URL = os.getenv("EMAIL_URL")                                      // 3.  获取 变量    
    application = get_wsgi_application()
    
    
    

.env 文件说明

1. 使用键值对的形式定义
2. 以  #  开头的为注释

Github 地址

posted @ 2019-11-13 12:09  梭梭666  阅读(3575)  评论(0编辑  收藏  举报
返回顶部