Loading... <div class="tip share">请注意,本文编写于 568 天前,最后修改于 563 天前,其中某些信息可能已经过时。</div> ## 简介 在一些项目中,处于安全性的要求,一般不将密码,key等放入到配置文件中。然而这些代码又是上传在**git**等平台上。为了方便管理。一般采用系统变量的方式来实现。 flask官方推荐使用**python-dotenv**包来管理特殊的配置。 ## 使用方式 ### 下载 ```shell pip install python-dotenv ``` <!--more--> ### 目录结构及代码 ```shell . ├── .env └── settings.py ``` ```python # settings.py from dotenv import load_dotenv load_dotenv() # 或者加一个配置,会默认覆盖已有环境变量的配置,推荐 load_dotenv(verbose=True) # 或者,指定配置文件地址 from pathlib import Path # python3 only env_path = Path('.') / '.env' load_dotenv(dotenv_path=env_path) ``` 示例如下: ```python # .env .env 一般是不提交到git上的。记得使用.gitignore 忽略 MYSQL_USER="root" MYSQL_PASSWORD="mysql" MYSQL_HOST="localhost" MYSQL_PORT=3306 MYSQL_DATABASE="test" REDIS_HOST="localhost" REDIS_PORT=6379 REDIS_DECODE_RESPONSES=true REDIS_PASSWORD="" # settings.py import os from dotenv import load_dotenv load_dotenv(override=True) # 一般的非隐秘的配置,可直接写在此处 DEBUG = True # 读取环境变量中的配置 MYSQL_USER = os.getenv("MYSQL_USER") MYSQL_PASSWORD = os.getenv("MYSQL_PASSWORD") MYSQL_HOST = os.getenv("MYSQL_HOST") MYSQL_PORT = int(os.getenv("MYSQL_PORT")) # python-dotenv不能自动转换类型,需添加转换 MYSQL_DATABASE = os.getenv("MYSQL_DATABASE") REDIS_HOST = os.getenv("REDIS_HOST") REDIS_PORT = int(os.getenv("REDIS_PORT")) REDIS_DECODE_RESPONSES = True REDIS_PASSWORD = os.getenv("REDIS_PASSWORD") ``` 引入变量的方法就是普通的**python**导入: ```python from settings import MYSQL_USER ``` ## 参考 [python-dotenv · PyPI](https://pypi.org/project/python-dotenv/) [欢迎来到 Flask 的世界 — Flask 中文文档 (2.0.1) (dormousehole.readthedocs.io)](https://dormousehole.readthedocs.io/en/latest/) Last modification:July 27, 2021 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 0 如果觉得我的文章对你有用,请作者喝杯咖啡把~