国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

深度定制Python的Flask框架開發環境的一些技巧總結

2019-11-25 16:38:44
字體:
來源:轉載
供稿:網友

Flask 環境配置
你的應用程序可能需要大量的軟件包才能正常的工作。如果都不需要 Flask 包的話,你有可能讀錯了教程。當應用程序運行的時候,你的應用程序的 環境 基本上是所有一切事情的根基。我們是幸運的,因為有許多方式使得我們能夠輕松地管理我們的環境。
使用 virtualenv 管理你的環境
virtualenv 是用于在所謂 虛擬環境 中隔離你的應用程序的一個工具。一個虛擬環境是包含了你的應用依賴的軟件的一個目錄。一個虛擬環境也能夠改變你的環境變量以維持你的開發環境包含的環境變量。不用下載包,像 Flask, 到你系統級或者用戶級的包目錄,我們可以下載它們到一個獨立的并且只為我們應用使用的目錄。這就可以很容易地指定使用的 Python 的版本以及每一個項目依賴的包。
Virtualenv 也可以讓你在不同的項目中使用相同的包的不同版本。這種靈活性可能是十分重要的,如果你正使用一個舊的系統并且它的上面有幾個項目需要不同的版本。
當使用 virtualenv 的時候,你通常只需要安裝幾個的 Python 包在你的系統上。其中一個就是 virtualenv 本身。你可以使用 Pip 來安裝 virtualenv 包。
一旦在你的系統上安裝了 virtualenv,你可以開始創建虛擬環境。前往你項目所在的目錄并且運行 virtualenv 命令。它需要一個參數,這個參數就是虛擬環境的目標目錄。下面展示了它大概的樣子。

$ virtualenv venvNew python executable in venv/bin/pythonInstalling Setuptools...........[...].....done.Installing Pip..................[...].....done.

virtualenv 創建一個新的目錄,依賴包將會安裝到這個目錄中。
一旦新的虛擬環境已經創建,你必須激活它,通過發動創建在虛擬環境里的 bin/activate 腳本。

$ which python/usr/local/bin/python$ source venv/bin/activate(venv)$ which python/Users/robert/Code/myapp/venv/bin/python

bin/activate 腳本對你的 shell 環境變量進行一些改變以致一切都指向新的虛擬環境而不是全局系統。你可以在上面的代碼塊中看到效果。激活后,python 命令指向虛擬環境的中 Python 的 bin 目錄。當虛擬環境激活后,使用 Pip 安裝的依賴包會被下載到虛擬環境中而不是全局系統。
你可能會注意到 shell 中的提示符也已經改變了。virtualenv 預先設定目前激活虛擬環境的名稱,因此你會知道你不是在全局系統上工作。
你可以通過運行 deactivate 命令停用你的虛擬環境。

(venv)$ deactivate

virtualenvwrapper
virtualenvwrapper 是一個用于管理 virtualenv 創建的虛擬環境的軟件包。我不想提到這個工具,直到你看到了 virtualenv 的基礎知識以便你理解它改善了什么以及為什么我們應該使用它。
上一部分創建的虛擬環境目錄會給你的項目庫帶來一些混亂。你只需要激活虛擬環境和它進行交互,但是它不應該出現在版本控制中,因此這個虛擬環境目錄就不應該在這里。解決方案就是使用 virtualenvwrapper。這個軟件包會把所有你的虛擬環境放在一個目錄的方式,通常默認是在 ~/.virtualenvs/。
要安裝 virtualenvwrapper,請按照文檔中的說明,文檔位于 http://virtualenvwrapper.readthedocs.org/en/latest/install.html 。
請確保在安裝 virtualenvwrapper 之前你已經停用所有的虛擬環境。你需要把它安裝在全局系統中,而不是虛擬環境中。
現在,不用運行 virtualenv 來創建一個環境,你需要運行 mkvirtualenv:

$ mkvirtualenv rocketNew python executable in rocket/bin/pythonInstalling setuptools...........[...].....done.Installing pip..................[...].....done.(rocket)$
mkvirtualenv 在你虛擬環境目錄中創建一個文件夾并且為你激活虛擬環境。就像上面的 virtualenv 一樣,python 以及 pip 指向虛擬環境中而不是全局系統的二進制文件。要激活一個特定的環境,使用命令:workon [environment name]。deactivate 仍然會停用虛擬環境。
安裝依賴包
隨著項目的發展,你會發現依賴包的列表會增大。需要幾十個 Python 包來運行一個 Flask 應用程序的情況并不少見。管理這些最簡單的方法是用一個簡單的文本文件。Pip 能夠生成一個列出所有已安裝的包的文本文件。在一個新的系統上,或者在一個新的剛創建的環境上也能讀取文件中的列表并且安裝它們中每一個。
pip freeze:
requirements.txt 是一個文本文件,它被許多 Flask 應用程序用來列出運行應用所有需要的包。這個代碼塊用來說明如何創建這個文件接著下一個代碼塊用來說明在一個新環境中如果使用這個文件來安裝依賴包。
(rocket)$ pip freeze > requirements.txt$ workon fresh-env(fresh-env)$ pip install -r requirements.txt[...]Successfully installed flask Werkzeug Jinja2 itsdangerous markupsafeCleaning up...(fresh-env)$
人工管理依賴包
隨著項目的發展,你可能會發現 pip freeze 列出的某些包實際上并不是運行應用必須的。你安裝這些包僅僅為開發用的。pip freeze 并不能區分,它僅僅列出目前已經安裝的包。因此,你可能要手動地管理這些依賴包。你可以分別把那些運行應用必須的包放入 require/_run.txt 以及那些開發應用程序需要的包放入 require/_dev.txt 。
版本控制
選擇一個版本控制系統并且使用它。我推薦 Git。從我所看到的,Git 是這些天來新項目最流行的選擇。能夠刪除代碼而不必擔心犯了一個不可逆轉的錯誤是非常寶貴的。你也可以讓你的項目擺脫大量注釋掉的代碼的困擾,因為你可以刪除它們,以后如有需要可以恢復它們。另外,你可以在 GitHub,Bitbucket 或者你自己的 Gitolite 服務器上備份整個項目。
置身版本控制之外的文件
我通常會讓一個文件置身版本控制之外有兩個原因:要么就是它會讓整個項目顯得混亂,要么它就是一個很隱私的密鑰/證書。編譯的 .pyc 文件和虛擬環境 ― 如果由于某些原因你沒有使用 virtualenvwrapper ― 就是讓項目顯得很混亂的例子。它們不需要在版本控制之中因為它們能夠分別地從 .py 文件和你的 requirements.txt 文件重新創建。
API 秘鑰,應用程序秘鑰以及數據庫證書是很隱私的密鑰/證書的示例。它們不應該出現在版本控制中因為它們的曝光將是一個巨大的安全漏洞。
當做跟安全有關的決定的時候,我總是喜歡假設我的版本庫將在某個時候變成公開的。這就意味著要保守秘密并且從不假設一個安全漏洞不會被發現,“誰來猜猜他們能做到”這類型的假設被稱為通過隱匿來實現安全,這是十分槽糕的策略。
當使用 Git 的時候,你可以在你的版本庫中創建名為 .gitignore 的一個特殊文件。在這個文件里,使用列表通配符來匹配文件名。任何匹配其中一個模式的文件名都會被 Git 給忽略掉。我推薦使用 .gitignore 來控制不需要版本控制的文件。例如:
*.pycinstance/
Instance 文件夾是用于以一種更安全地方式提供給你的應用程序敏感配置變量。我將會在后面更多地談到它。
你可以閱讀更多的關于 .gitignore 的內容從這里: http://git-scm.com/docs/gitignore
調試
1.調試模式
Flask 有一個稱為調試模式方便的功能。要打開調試功能的話,你只必須在你的開發配置中設置 debug = True。當它打開的時候,服務器會在代碼變化的時候自動加載并且出錯的時候會伴隨著一個堆棧跟蹤和一個交互式控制臺。
小心!不要在生產環境中使用調試模式。交互式控制臺允許執行任意代碼并會是一個巨大的安全漏洞。
2.Flask-DebugToolbar
Flask-DebugToolbar 是另一個非常了不起的工具,它可以幫助在你的應用程序中調試問題。在調試模式下,它會把一個側邊欄置于你的應用程序的每一頁上。側邊欄提供了有關 SQL 查詢,日志記錄,版本,模板,配置和其它有趣的信息,使得更容易地跟蹤問題。
看看快速入門中的 調試模式。在 Flask 官方文檔 中有一些關于錯誤處理,日志記錄以及使用調試器等不錯的信息。

Flask 工程配置
當你學習 Flask 的時候,配置看起來很簡單。你只要在 config.py 中定義一些變量接著一切就能工作了。當你開始必須要管理生產應用的配置的時候,這些簡單性開始消失了。你可能需要保護 API 密鑰以及為不同的環境使用不同的配置(例如,開發和生產環境)。在本章節中我們會介紹 Flask 一些先進的功能,它可以使得管理配置容易些。
簡單的例子
一個簡單的應用程序可能不會需要任何這些復雜的功能。你可能只需要把 config.py 放在你的倉庫/版本庫的根目錄并且在 app.py 或者 yourapp///_init//_.py 中加載它。
config.py 文件中應該每行包含一個配置變量賦值。當你的應用程序初始化的時候,在 config.py 中的配置變量用于配置 Flask 和它的擴展并且它們能夠通過 app.config 字典訪問到

主站蜘蛛池模板: 庆阳市| 临潭县| 灵寿县| 鄂伦春自治旗| 太湖县| 新化县| 福鼎市| 岢岚县| 合阳县| 永顺县| 嘉峪关市| 铜陵市| 唐河县| 新丰县| 道孚县| 金沙县| 德昌县| 贡嘎县| 桑日县| 淳安县| 常山县| 历史| 晋宁县| 临城县| 内丘县| 安福县| 安康市| 河间市| 濮阳县| 石泉县| 荥经县| 德清县| 西平县| 郓城县| 沙坪坝区| 张家界市| 丰原市| 临沭县| 共和县| 庐江县| 义马市|