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')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM