一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 在flask中使用python-dotenv+flask-cli自定義命令(推薦)

在flask中使用python-dotenv+flask-cli自定義命令(推薦)

2020-05-09 10:01Jokky Python

這篇文章主要介紹了在flask中使用python-dotenv+flask-cli自定義命令的相關知識,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

最近在重構 flask 項目的時候發現項目的環境變量異常的混亂,非常不便于管理。而且,更重要的事情是我需要通過自定義命令來運行 devlopment 和 production 兩種項目環境。

自定義命令工具——flask-cli

在Flask 1.0+ 中已經支持了flask-cli,在翻閱了flask-cli文檔之后,發現文檔中提供的自定義命令的方法約束還是有點多,而且介紹的也不是特別詳細。后來,通過查看flask-cli的源碼發現flask-cli是基于Click開發的。

Click is a Python package for creating beautiful command line interfaces in a composable way with as little code as necessary. It's the “Command Line Interface Creation Kit”. It's highly configurable but comes with sensible defaults out of the box.

Click是一個可以使用簡潔代碼和組合方法來創建漂亮的命令行命令的Python包。它還是一個高度可配置的,具有合理的默認設置的命令行工具創建工具包。

管理環境變量——python-dotenv

在使用flask-cli的時候,為了不需要每次都在 flask run 之前都引入環境變量。官方文檔中提了 python-dotenv ,需要在項目中創建 .env 和 .flaskenv 兩個文件。

命令行設置的變量會重載 .env 中的變量, .env 中的變量會重載 .flaskenv 中的變量。 .flaskenv 應當用于公共變量,如 FLASK_APP 而 .env 則應用用于私有變量,并且不提交到儲存庫。

在使用 python-dotenv 之前還需要通過 pip 去安裝依賴包(我這里使用的 pipenv ):

pipenv install python-dotenv

在 .env 文件中一般寫一些私有變量或者是涉及到隱私的變量,即使不上傳到 git 上也不影響程序運行的這種。

下面以 .flaskenv 中的幾個變量為例:

?
1
2
3
4
5
# .flaskenv
FLASK_APP = "app"
FLASK_ENV = "development"
FLASK_RUN_HOST = '0.0.0.0'
FLASK_RUN_PORT = '5000'

讀取環境變量

這里介紹如何在項目讀取變量的方法:

?
1
2
3
4
5
6
7
import os
from dotenv import load_dotenv
# 加載環境變量文件,dotenv_path默認值為.env,override是表示是否可以重載,默認值為False
load_dotenv(dotenv_path='.flaskenv',override=True)
# 讀取環境變量 FLASK_ENV,通過os.getenv()方法中引入字段名稱來讀取
env = os.getenv("FLASK_ENV")
print(env)

自定義命令

這里我的項目的入口文件為 app.py

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# app.py
import click
import os
from os.path import dirname,join
from dotenv import load_dotenv
# 加載變量文件
load_dotenv(dotenv_path='.flaskenv')
 
'''
下面這一段代碼是根據在命令行中傳入的dev的值來執行不同的命令,從而達到一個命令區分開發環境和生產環境
'''
@click.command()
@click.option('--dev', default=os.getenv("FLASK_ENV"),help='environment variable')
def runserver(dev):
 os.system("FLASK_ENV=%s flask run" % (dev))
 
if __name__ == '__main__':
 runserver()

運行代碼:

?
1
2
3
4
5
6
# 開發環境
python app.py
或者
python app.py --dev=development
# 生產環境
python app.py --dev=production

目前,第一階段就做了這么多,其中還有很多不足之處,希望大家幫忙提出點意見,后續我有更多的做法,也會第一時間更新這些內容。

總結

以上所述是小編給大家介紹的在flask中使用python-dotenv+flask-cli自定義命令,希望對大家有所幫助!

原文鏈接:https://juejin.im/post/5e0f58605188253aa83e29e0

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 2023最新伦理片 | 国产高清视频在线 | 青青成人 | 桃色公寓| 亚洲毛片网 | 亚洲2卡三卡4卡5卡精品 | 5g影院天天 | sao虎在线精品永久在线 | 国产播放器一区 | 校草太大了h | 成年人视频在线播放 | 无耻之徒第十一季在线观看 | 91夜夜人人揉人人捏人人添 | 69av美女| 王者荣耀瑶白色液体 | 超h高h肉h文武侠 | 毛片在线播放a | 国产第一页无线好源 | 99re在线视频免费观看 | 国产午夜免费视频 | 国产精品视频1区 | 日韩中文字幕视频在线观看 | 日韩经典在线 | 亚洲色图第四页 | 青青青视频蜜桃一区二区 | 俄罗斯美女毛茸茸bbwbbw | 免费高清在线观看 | 牧教师| 日韩一品在线播放视频一品免费 | caoporm国产精品视频免费 | 四虎在线精品免费高清在线 | 日本欧美不卡一区二区三区在线 | 好爽好深好猛好舒服视频上 | 久久精品国产欧美日韩99热 | yy8090韩国日本三理论免费 | 亚洲国产精品无码中文字幕 | 国产麻豆剧果冻传媒观看免费视频 | 亚洲高清无在码在线电影 | yellow高清免费观看日本 | 亚洲国产精品嫩草影院永久 | 天天色国产|