前言
剛開始開發Web的時候,沒太在意隔離虛擬環境,用了系統的那一套,Python2.7版本是系統自帶的,雖說明年就結束了,但是現在開發都會有一套3.x以上的環境,即使你開發不注意,你部署的時候總歸是要隔離出來的。
1.方便隔離,不同環境編寫測試
2.方便遷移,
pip freeze
到出包文件依賴,隨后提交管理和遷移都很方便
virtualenv
前提是你有兩套Python
mikejingdeMacBook-Pro:~ MKJ$
which
python
/usr/bin/python
mikejingdeMacBook-Pro:~ MKJ$
which
python3
/usr/local/bin/python3
Python將所有三方包托管到一個公共倉庫,任何人都能從這個公共倉庫下載并安裝所有的三方包。Python將三方包公共倉庫命名為PyPI以表示Python Package Index的縮寫(被一些人戲稱為"cheese shop")。從PyPI上安裝三方包非常簡單,Python專門提供了一個名為pip的工具來解決這個問題(Python2.7中不含pip工具,需要單獨安裝)
mikejingdeMacBook-Pro:~ MKJ$ pip list
-bash: pip:
command
not found
mikejingdeMacBook-Pro:~ MKJ$ pip3 list
Package Version
---------- -------
pip 18.1
setuptools 40.5.0
wheel 0.32.2
可以看到Python2.7不會自帶pip,3的話就會自帶上面三個包。
為了解決維護不同應用程序對應不同版本的問題,Python使用了虛擬環境的概念。 虛擬環境是Python解釋器的完整副本。在虛擬環境中安裝三方包時只會作用到虛擬環境,全局Python解釋器不受影響。 那么,就為每個應用程序安裝各自的虛擬環境吧。
首先我們看下是否在各自環境下有安裝
virtualenv
bogon:~ MKJ$ pip list
bogon:~ MKJ$ pip3 list
Package Version
---------- -------
pip 18.1
setuptools 40.5.0
virtualenv 16.6.1
wheel 0.32.2
bogon:~ MKJ$
沒有的話
pip
install
virtualenv
安裝虛擬環境方法一(Django演示 + virtualenv)
1.創建虛擬環境目錄
mkdir
flask_project
cd
flask_project
2.到底是副本出Python2還是Python3虛擬環境
你想創建哪套虛擬環境可以根據
-p
指定,首先可以用
which python
,
which python3
拿到執行文件目錄
virtualenv venv
# 該方法默認用系統2.7創建出虛擬環境
virtualenv -p /usr/local/bin/python3 venv
# 指定Python3創建出虛擬環境
3.激活/關閉
# 激活
source
venv/bin/activate
# 或者
# . venv/bin/activate
# 激活后此時你的終端前綴就變化了
# deactivate 是關閉環境
4.以Django為例創建一個Hello world
退出后每次進去
venv
文件夾目錄,然后
. /venv/bin/activate
后啟動虛擬環境,隨后安裝
pip install django
,以下是虛擬環境下包,和全局的2.7或者3.x的不會有任何交叉,獨立的
(
venv
)
mikejingdeMacBook-Pro:django-project MKJ$ pip list
Package Version
---------- -------
Django 2.2.2
pip 19.1.1
pytz 2019.1
setuptools 41.0.1
sqlparse 0.3.0
wheel 0.33.4
這里這是簡單的寫個Django的Hello World,具體細節和為什么就不在這里說了,以后有空再寫博客出來介紹
5.啟動項目
django-admin startproject mysite
6 .創建app
python manage.py startapp blogs
7 .進入app模塊創建
urls.py
from
django
.
urls
import
path
from
.
import
views
app_name
=
"blogs"
urlpatterns
=
[
path
(
''
,
views
.
index
,
name
=
'index'
)
]
8 .編寫
views.py
from django.shortcuts
import
render
from django.http
import
HttpResponse
# Create your views here.
def index
(
request
)
:
return
HttpResponse
(
'Hello World'
)
9 .blogs同級目錄下的mysite中編寫urls路由
from django.contrib
import
admin
from django.urls
import
path, include
urlpatterns
=
[
path
(
'admin/'
, admin.site.urls
)
,
path
(
'blogs/'
, include
(
'blogs.urls'
))
]
10 .回到
manage.py
目錄下啟動服務
python manage.py runserver
11.打開
127.0.0.1:8000/blogs
就能看到我們上面寫的第一個 Django編寫的Hello world
安裝虛擬環境二 (Flask演示 + Python3.4以上自帶創建環境)
Python版本低于3.4,默認是不支持一下方式創建虛擬環境
1.創建目錄
mkdir
flask-project
cd
flask-project
2.安裝虛擬環境
python3 -m venv venv
使用這個命令來讓Python運行venv包,它會創建一個名為venv的虛擬環境。 命令中的第一個“venv”是Python虛擬環境包的名稱 ,第二個是要用于這個特定環境的虛擬環境名稱。 如果你覺得這樣很混亂,可以用你自定義的虛擬環境名字替換第二個venv。我習慣在項目目錄中創建了名為venv的虛擬環境,所以無論何時cd到一個項目中,都會找到相應的虛擬環境。
3.激活虛擬環境安裝Flask
.
venv/bin/activate
# 啟動
pip
install
flask
# 安裝flask
4.創建Flask應用
應用程序是存在于包中的。 在Python中,包含__init__.py文件的子目錄被視為一個可導入的包。 當你導入一個包時,
init
.py會執行并定義這個包暴露給外界的屬性。
mkdir
app
# 創建應用文件夾
cd
app
# 創建 __init__.py
from flask
import
Flask
app
=
Flask
(
__name__
)
from app
import
routes
# 創建 routes.py
from app
import
app
@app.route
(
'/'
)
@app.route
(
'/index'
)
def index
(
)
:
return
"Hello, World!"
其一,這里有兩個實體名為app。 app包由app目錄和__init__.py腳本來定義構成,并在from app import routes語句中被引用。 app變量被定義為__init__.py腳本中的Flask類的一個實例,以至于它成為app包的屬性。
其二,routes模塊是在底部導入的,而不是在腳本的頂部。 最下面的導入是解決循環導入的問題,這是Flask應用程序的常見問題。 你將會看到routes模塊需要導入在這個腳本中定義的app變量, 因此將routes的導入放在底部可以避免由于這兩個文件之間的相互引用而導致的錯誤。
那么在routes模塊中有些什么? 路由是應用程序實現的不同URL。 在Flask中,應用程序路由的處理邏輯被編寫為Python函數,稱為視圖函數。 視圖函數被映射到一個或多個路由URL,以便Flask知道當客戶端請求給定的URL時執行什么邏輯。
函數上面的兩個奇怪的@app.route行是裝飾器,
這是Python語言的一個獨特功能。 裝飾器會修改跟在其后的函數。 裝飾器的常見模式是使用它們將函數注冊為某些事件的回調函數。 在這種情況下,@app.route修飾器在作為參數給出的URL和函數之間創建一個關聯。
在這個例子中,有兩個裝飾器,它們將URL /和/index索引關聯到這個函數。 這意味著,當Web瀏覽器請求這兩個URL中的任何一個時,Flask將調用該函數并將其返回值作為響應傳遞回瀏覽器。這樣做是為了在運行這個應用程序的時候會稍微有一點點意義。
5 .創建腳本
回到
flask-project
,創建一個manage.py的文件,加入
from
app
import
app
Flask應用程序實例被稱為app,是app包的成員。from app import app語句從app包導入其成員app變量。
flask-project/
venv/
app/
__init__.py
routes.py
manage.py
6 .設置Flask環境變量
export
FLASK_APP
=
manage.py
7 .啟動
(
venv
)
mikejingdeMacBook-Pro:flask_project MKJ$ flask run
* Environment: production
WARNING: This is a development server. Do not use it
in
a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/
(
Press CTRL+C to quit
)
8 .環境變量設置
上面的環境變量是臨時的,你如果喜歡可以每次設置,如果永久的話需要安裝如下
從 1.0 版本開始,Flask 允許你設置只會在運行flask命令時自動注冊生效的環境變量,要實現這點,你需要安裝 python-dotenv:
(
venv
)
$ pip
install
python-dotenv
此時,在項目的根目錄下新建一個名為 .flaskenv 的文件,其內容是:
FLASK_APP
=
manage.py
Pytharm 自動創建
Pytharm --- Preference --- Project.xxx --- Project Interpreter
就是我們工程虛擬環境的配置項
參考文檔
Flask文檔
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
