本文由葡萄城技術團隊於原創並首發python
轉載請註明出處:葡萄城官網,葡萄城爲開發者提供專業的開發工具、解決方案和服務,賦能開發者。linux
上一篇咱們介紹了在Windows 10下進行初學者入門開發Python的指南,在本篇中咱們一塊兒看一下看在Windows子系統(WSL)如何使用Python進行Web開發的按部就班指南。git
咱們建議在生成 web 應用程序時在 WSL 上安裝 Python。 Python web 開發的許多教程和說明都是針對 Linux 用戶編寫的, 並使用基於 Linux 的打包和安裝工具。 大多數 web 應用還部署在 Linux 上, 所以, 這將確保你的開發環境與生產環境之間的一致性。程序員
若是你使用的是 web 開發之外的其餘內容, 則咱們建議你使用 Microsoft Store 直接在 Windows 10 上安裝 Python。 WSL 不支持 GUI 桌面或應用程序 (如 PyGame、Gnome、KDE 等)。 在這些狀況下, 請在 Windows 上直接安裝並使用 Python。 若是你不熟悉 Python, 請參閱如下指南:開始在 Windows 上使用 Python。 若是你有興趣自動執行操做系統上的常見任務, 請參閱如下指南:開始在 Windows 上使用 Python 進行腳本編寫和自動化。 對於某些高級方案, 你可能須要考慮直接從python.org下載特定的 Python 版本, 或考慮安裝備用項, 例如 Anaconda、Jython、PyPy、WinPython、IronPython 等。僅當你是更高級的 Python 程序員時, 才建議使用此方法, 具體緣由是選擇替代實現。github
經過 WSL, 你能夠運行 GNU/Linux 環境 (包括大多數命令行工具、實用工具和應用程序), 直接在 Windows 上進行修改, 並與 Windows 文件系統和經常使用工具 (如 Visual Studio Code) 徹底集成。 在啓用 WSL 以前, 請檢查你是否擁有最新版本的 Windows 10。web
若要在您的計算機上啓用 WSL, 您須要:sql
轉到 "開始" 菜單 (左下方的窗口圖標), 鍵入 "打開或關閉 windows 功能", 而後選擇指向 "控制面板" 的連接以打開 " windows 功能" 彈出菜單。 在列表中找到 "適用於 Linux 的 Windows 子系統" 並選中複選框以啓用該功能。數據庫
出現提示時, 請從新啓動計算機。django
有多個 Linux 分發可在 WSL 上運行。 能夠在 Microsoft Store 中查找和安裝收藏夾。 建議從Ubuntu 18.04 LTS開始, 由於它是最新的、受歡迎的而且很受支持。flask
打開此Ubuntu 18.04 LTS連接, 打開 Microsoft Store, 而後選擇 "獲取"。 (這是一個至關大的下載, 可能須要一段時間才能安裝。)
下載完成後, 在 "開始" 菜單中鍵入 "UBUNTU 18.04 LTS", 從 Microsoft Store 或 "啓動" 中選擇 "啓動"。
首次運行分發時, 系統將要求你建立賬戶名稱和密碼。 在此以後, 默認狀況下, 你將以此用戶的身份自動登陸。 您能夠選擇任何用戶名和密碼。 它們不會影響你的 Windows 用戶名。
能夠經過輸入如下內容來檢查當前使用的 Linux 分發版: lsb_release -d
。 若要更新 Ubuntu 分發, 請使用sudo apt update && sudo apt upgrade
:。 建議按期更新以確保具備最新的包。 Windows 不會自動處理此更新。 有關適用於 Microsoft Store、替代安裝方法或故障排除的其餘 Linux 發行版的連接, 請參閱適用於 windows 10 的適用於 Linux 的 Windows 子系統安裝指南。
經過使用 VS Code, 充分利用IntelliSense、 Linting、調試支持、代碼片斷和單元測試。 VS Code 與適用於 Linux 的 Windows 子系統完美集成, 提供內置終端在代碼編輯器和命令行之間創建無縫的工做流, 此外還支持使用通用 Git進行版本控制的 git直接內置於 UI 中的命令 (添加、提交、推送、拉取)。
下載並安裝適用於 Windows 的 VS Code。 VS Code 也適用於 Linux, 但適用於 Linux 的 Windows 子系統不支持 GUI 應用, 所以咱們須要在 Windows 上安裝它。 不用擔憂, 你仍可使用遠程-WSL 擴展與 Linux 命令行和工具集成。
在 VS Code 上安裝WSL 擴展。 這使你能夠將 WSL 用做集成開發環境, 並將爲你處理兼容性和路徑。 瞭解詳情。
重要
若是已安裝 VS Code, 則須要確保將1.35 發佈或更高版本, 以便安裝遠程 WSL 擴展。 建議不要在不使用 WSL 擴展的 VS Code 中使用 WSL, 由於將失去對自動完成、調試、linting 等的支持。趣味事實:此 WSL 擴展安裝在 $HOME/.vscode-server/extensions。
讓咱們在 Linux (Ubuntu) 文件系統上建立一個新的項目目錄, 而後, 咱們將使用 VS Code 來處理 Linux 應用和工具。
轉到 "開始" 菜單 (左下方的窗口圖標), 而後鍵入如下內容, 關閉 VS Code 並打開 Ubuntu 18.04 (你的 WSL 命令行):"Ubuntu 18.04"。
在 Ubuntu 命令行中, 導航到要在其中放置項目的位置, 併爲其建立目錄: mkdir HelloWorld
。
提示
使用適用於 Linux 的 Windows 子系統 (WSL) 時, 要記住的重要一點是,你如今在兩個不一樣的文件系統之間工做:1) 你的 Windows 文件系統 (WSL) 是你的 Linux 文件系統 (), 它是示例的 Ubuntu。 須要注意安裝包和存儲文件的位置。 你能夠在 Windows 文件系統中安裝工具或包的一個版本, 並在 Linux 文件系統中安裝徹底不一樣的版本。 更新 Windows 文件系統中的工具將對 Linux 文件系統中的工具無效, 反之亦然。 WSL 會將計算機上的固定驅動器裝載到 Linux發行版中的/mnt/文件夾下。 例如, Windows C: 驅動器安裝在下/mnt/c/
。 能夠從 Ubuntu 終端訪問 Windows 文件, 並對這些文件使用 Linux 應用和工具, 反之亦然。 建議在適用於 Python web 開發的 Linux 文件系統中工做, 由於最初爲 Linux 編寫了大部分 web 工具, 並在 Linux 生產環境中進行了部署。 它還避免了混合文件系統語義 (如 Windows 在文件名上不區分大小寫)。 也就是說, WSL 如今支持在 Linux 和 Windows 文件系統之間跳轉, 所以你能夠將文件託管在其中的系統上。 瞭解詳情。 咱們也很高興地分享了WSL2 即將推出的 Windows , 並會提供一些重大改進。 你如今能夠在 Windows 預覽體驗內部版本18917上試用。
Ubuntu 18.04 LTS 附帶了 Python 3.6, 但不附帶一些你可能但願在其餘 Python 安裝中得到的模塊。 咱們仍須要安裝pip、用於 Python 的標準包管理器和venv, 這是用於建立和管理輕型虛擬環境的標準模塊。
打開 Ubuntu 終端並輸入: python3 --version
, 確認已安裝 Python3。 這應會返回 Python 版本號。 若是須要更新你的 Python 版本, 請首先輸入: sudo apt update && sudo apt upgrade
, 而後使用sudo apt upgrade python3
更新 Python 來更新 Ubuntu 版本。
經過輸入如下內容來sudo apt install python3-pip
安裝 pip:。 Pip 容許你安裝和管理不屬於 Python 標準庫的其餘包。
輸入如下內容安裝 venv sudo apt install python3-venv
:。
對於 Python 開發項目, 建議使用虛擬環境。 經過建立虛擬環境, 你能夠將項目工具隔離開來, 並避免與其餘項目的工具存在版本衝突。例如, 你可能須要維護一個須要 Django 1.2 web 框架的舊 web 項目, 但隨後使用 Django 2.2 就會得到使人興奮的新項目。 若是在虛擬環境外全局更新 Django, 之後可能會遇到一些版本控制問題。 除了防止意外的版本控制衝突之外, 虛擬環境容許您在沒有管理權限的狀況下安裝和管理包。
打開終端, 並在HelloWorld項目文件夾中使用如下命令建立名爲的虛擬環境 。 venv: python3 -m venv .venv
。
若要激活虛擬環境, 請輸入source .venv/bin/activate
:。 若是它有效, 你應該在命令提示符以前看到 (. venv) 。 如今, 你有了一個可供編寫代碼和安裝包的獨立環境。 完成虛擬環境後, 請輸入如下命令將其停用: deactivate
。
提示
建議在計劃項目的目錄中建立虛擬環境。 因爲每一個項目都應具備本身的單獨目錄, 所以, 每一個項目都具備本身的虛擬環境, 所以無需惟一命名。 咱們建議使用venv來遵循 Python 約定。 若是安裝在項目目錄中, 某些工具 (如 pipenv) 也默認爲此名稱。 不但願使用與環境變量定義文件衝突的env。 一般不建議非點前導名稱, 由於不須要ls
持續提醒您該目錄存在。 咱們還建議將 . venv添加到 .gitignore 文件。 (下面是適用於Python 的 GitHub 默認 .gitignore 模板供參考。)有關在 VS Code 中使用虛擬環境的詳細信息, 請參閱在 VS Code 中使用 Python 環境。
VS Code 使用遠程 WSL 擴展 (以前安裝) 將 Linux 子系統視爲遠程服務器。 這使你可使用 WSL 做爲集成開發環境。 瞭解詳情。
輸入如下內容, 從 Ubuntu 終端 VS Code 打開項目文件夾: code .
("." 告訴 VS Code 打開當前文件夾)。
將從 Windows Defender 彈出一個安全警報, 並選擇 "容許訪問"。 打開 VS Code 後, 你應該會在左下角看到遠程鏈接主機指示器, 讓你知道在 WSL 上進行編輯:Ubuntu-18.04。
關閉 Ubuntu 終端。 向前移動將使用集成到 VS Code 中的 WSL 終端。
經過按Ctrl + ' (使用反撇號字符) 或選擇 "查看 > 終端", 在 VS Code 中打開 WSL 終端。 這會打開一個 bash (WSL) 命令行, 此命令行打開到你在 Ubuntu 終端中建立的項目文件夾路徑。
你將須要安裝 WSL 的任何 VS Code 擴展。 已在 VS Code 本地安裝的擴展將沒法自動使用。 瞭解詳情。
經過輸入Ctrl + Shift + X打開 "VS Code 擴展" 窗口 (或使用菜單導航到 "視圖 > " "擴展")。
在 "Marketplace 的頂級搜索擴展" 框中, 輸入:Python。
經過 Microsoft 擴展查找 python (ms python python) , 並選擇 "綠色安裝" 按鈕。
擴展安裝完成後, 你將須要選擇 "須要從新加載" 按鈕。 這會重載 VS Code 並顯示WSL:"VS Code 擴展" 窗口中的 "UBUNTU-18.04-已安裝" 部分顯示已安裝 Python 擴展。
Python 是一種解釋型語言, 支持不一樣類型的 interpretors (Python二、Anaconda、PyPy 等)。 VS Code 應默認爲與項目關聯的解釋器。若是有理由更改它, 請選擇 "VS Code" 窗口底部藍色欄中當前顯示的解釋器, 或打開命令面板(Ctrl + Shift + P), 而後輸入如下命令 :選擇解釋器。 這會顯示當前已安裝的 Python 解釋器列表。 詳細瞭解如何配置 Python 環境。
讓咱們建立並運行一個簡單的 Python 程序做爲測試, 並確保已選擇正確的 Python 解釋器。
經過輸入Ctrl + Shift + E打開 "VS Code 文件資源管理器" 窗口 (或使用菜單導航到 "視圖 > 資源管理器")。
若是它還沒有打開, 請按Ctrl + Shift + ' 打開集成的 WSL 終端, 並確保已選中HelloWorld python 項目文件夾。
經過輸入如下內容建立 python 文件touch test.py
:。 你應看到剛纔建立的文件顯示在你的 "資源管理器" 窗口中的 venv 和. vscode 文件夾下的項目目錄中。
選擇剛在 "資源管理器" 窗口中建立的test.py文件, 在 VS Code 中打開它。 因爲文件名中的 py 告訴 VS Code 這是一個 Python 文件, 所以你以前加載的 Python 擴展會自動選擇並加載一個 Python 解釋器, 該解釋器將顯示在 VS Code 窗口的底部。
將此 Python 代碼粘貼到你的 test.py 文件中, 而後保存該文件 (Ctrl + S):
print("Hello World")
若要運行咱們剛剛建立的 Python "Hello World" 程序, 請在 "VS Code 資源管理器" 窗口中選擇test.py文件, 而後右鍵單擊該文件以顯示選項的菜單。 選擇 "在終端中運行 Python 文件" 。 或者, 在集成的 WSL 終端窗口中, 輸入python test.py
: 運行 "Hello World" 程序。 Python 解釋器會在終端窗口中打印 "Hello World"。
恭喜. 一切都已設置爲建立和運行 Python 程序! 如今, 讓咱們嘗試使用兩個最受歡迎的 Python web 框架建立 Hello World 應用:Flask 和 Django。
Flask是適用於 Python 的 web 應用程序框架。 在此 brief 教程中, 你將使用 VS Code 和 WSL 建立一個小型的 "Hello World" Flask 應用。
轉到 "開始" 菜單 (左下方的窗口圖標), 而後鍵入如下內容, 打開 Ubuntu 18.04 (你的 WSL 命令行):"Ubuntu 18.04"。
爲項目建立目錄: mkdir HelloWorld-Flask
, 而後cd HelloWorld-Flask
輸入目錄。
建立虛擬環境以安裝項目工具:python3 -m venv .venv
輸入如下命令, 在 VS Code 中打開HelloWorld Flask項目:code .
在 VS Code 中, 經過輸入Ctrl + Shift + ' (您的HelloWorld-Flask項目文件夾應已選中) 打開集成 WSL 終端 (也稱爲 Bash)。 關閉 Ubuntu 命令行, 由於咱們將在與 VS Code 前進的 WSL 終端中進行工做。
使用 VS Code 中的 Bash 終端激活在步驟 #3 中建立的虛擬環境: source .venv/bin/activate
。 若是它有效, 你應該在命令提示符以前看到 (. venv)。
輸入如下內容, 在虛擬環境中安裝python3 -m pip install flask
Flask:。 經過輸入如下內容來驗證它是否python3 -m flask --version
已安裝:。
爲 Python 代碼建立新文件:touch app.py
在 VS Code 的文件資源管理器 (Ctrl+Shift+E
, 而後選擇 app.py 文件) 中打開 app.py 文件。 這會激活 Python 擴展以選擇解釋器。 它應默認爲Python 3.6.8 64 位 (venv): venv) 。 請注意, 它還檢測到你的虛擬環境。
在app.py中, 添加代碼以導入 Flask 並建立 Flask 對象的實例:
from flask import Flask app = Flask(__name__)
11. 一樣, 在app.py中, 添加一個返回內容的函數, 在本例中爲簡單字符串。 使用 Flask 的應用程序。路由修飾器將 URL 路由 "/" 映射到該函數:
@app.route("/") def home(): return "Hello World! I'm using Flask."
12. 保存app.py文件 (Ctrl + S)。
13. 在終端中, 輸入如下命令運行應用:
python3 -m flask run
這將運行 Flask 開發服務器。 默認狀況下, 開發服務器將查找app.py 。 運行 Flask 時, 應會看到相似於下面的輸出:
(env) user@USER:/mnt/c/Projects/HelloWorld$ python3 -m 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)
打開默認 web 瀏覽器到呈現的頁面, 而後在終端中 http://127.0.0.1:5000/ 按Ctrl 並單擊該 URL。 你應在瀏覽器中看到如下消息:
請注意, 在訪問相似於 "/" 的 URL 時, 調試終端中會出現一條消息, 其中顯示了 HTTP 請求:
127.0.0.1 - - [19/Jun/2019 13:36:56] "GET / HTTP/1.1" 200 -
在終端中使用Ctrl + C中止應用。
恭喜, 你已使用 Visual Studio Code 和適用於 Linux 的 Windows 子系統建立了 Flask web 應用程序! 有關使用 VS Code 和 Flask 的更深刻教程, 請參閱Visual Studio Code 中的 Flask 教程。
Django是適用於 Python 的 web 應用程序框架。 在此 brief 教程中, 你將使用 VS Code 和 WSL 建立一個小型的 "Hello World" Django 應用。
轉到 "開始" 菜單 (左下方的窗口圖標), 而後鍵入如下內容, 打開 Ubuntu 18.04 (你的 WSL 命令行):"Ubuntu 18.04"。
爲項目建立目錄: mkdir HelloWorld-Django
, 而後cd HelloWorld-Django
輸入目錄。
建立虛擬環境以安裝項目工具:python3 -m venv .venv
輸入如下命令, 在 VS Code 中打開HelloWorld DJango項目:code .
在 VS Code 中, 經過輸入Ctrl + Shift + ' (您的HelloWorld-Django項目文件夾應已選中) 打開集成 WSL 終端 (也稱爲 Bash)。 關閉 Ubuntu 命令行, 由於咱們將在與 VS Code 前進的 WSL 終端中進行工做。
使用 VS Code 中的 Bash 終端激活在步驟 #3 中建立的虛擬環境: source .venv/bin/activate
。 若是它有效, 你應該在命令提示符以前看到 (. venv)。
在虛擬環境中安裝 Django 命令: python3 -m pip install django
。 經過輸入如下內容來驗證它是否python3 -m django --version
已安裝:。
接下來, 運行如下命令以建立 Django 項目:
django-admin startproject web_project .
該startproject
命令假定.
當前文件夾是項目文件夾, 並在該文件夾中建立如下內容:
manage.py
:項目的 Django 命令行管理實用工具。 使用python manage.py <command> [options]
爲項目運行管理命令。
名爲web_project
的子文件夾, 其中包含如下文件:
__init__.py
: 指示 Python 的空文件此文件夾是一個 Python 包。wsgi.py
: 用於 WSGI 的 web 服務器的入口點, 用於爲你的項目提供服務。 一般將此文件保留原樣, 由於它提供了用於生產 web 服務器的掛鉤。settings.py
: 包含 Django 項目的設置, 你能夠在開發 web 應用過程當中修改這些設置。urls.py
: 包含 Django 項目的目錄, 你還能夠在開發過程當中對其進行修改。若要驗證 Django 項目, 請使用命令python3 manage.py runserver
啓動 Django 的開發服務器。 服務器在默認端口8000上運行, 你應該會在終端窗口中看到相似於如下輸出的輸出:
Performing system checks... System check identified no issues (0 silenced). June 20, 2019 - 22:57:59 Django version 2.2.2, using settings 'web_project.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
首次運行服務器時, 它會在文件db.sqlite3
中建立一個默認的 SQLite 數據庫, 該數據庫用於開發目的, 但可用於在生產中用於低容量 web 應用。 此外, Django 的內置 web 服務器僅用於本地開發目的。 可是, 當你部署到 web 主機時, Django 將改用主機的 web 服務器。 Django wsgi.py
項目中的模塊負責掛鉤到生產服務器。
若是要使用不一樣於默認8000的端口, 請在命令行中指定端口號, 例如python3 manage.py runserver 5000
。
Ctrl+click
" http://127.0.0.1:8000/
終端輸出" 窗口中的 URL, 用於將默認瀏覽器打開到該地址。 若是 Django 安裝正確且項目有效, 你將看到默認頁面。 "VS Code 終端輸出" 窗口還顯示服務器日誌。
完成後, 請關閉瀏覽器窗口, 並使用Ctrl+C
中所述的在 VS Code 中中止服務器。
如今, 若要建立 Django 應用, 請在項目文件夾 ( startapp
其中manage.py
駐留) 中運行管理實用工具的命令:
python3 manage.py startapp hello
命令建立一個名hello
爲的文件夾, 該文件夾包含多個代碼文件和一個子文件夾。 在這些狀況下, 常用views.py
(包含用於定義 web 應用中的頁的函數) 和models.py
(包含定義數據對象的類)。 此migrations
文件夾由 Django 的管理實用工具用來管理數據庫版本, 如本教程後面部分所述。 此外, 還提供了apps.py
文件 (應用配置admin.py
) (用於建立管理界面) 和tests.py
(適用於測試), 此處未介紹這些文件。
修改hello/views.py
以匹配如下代碼, 這將爲應用的主頁建立單個視圖:
from django.http import HttpResponse def home(request): return HttpResponse("Hello, Django!")
使用如下內容建立hello/urls.py
文件。 在urls.py
文件中指定模式, 將不一樣的 url 路由到相應的視圖。 下面的代碼包含一個路由, 用於將應用程序的根 URL""
() 映射views.home
到剛剛添加到hello/views.py
的函數:
from django.urls import path from hello import views urlpatterns = [ path("", views.home, name="home"), ]
該web_project
文件夾還包含一個urls.py
文件, 該文件是 URL 路由的實際處理方式。 打開web_project/urls.py
並對其進行修改以匹配如下代碼 (若是須要, 能夠保留指導註釋)。 此代碼會在應用程序hello/urls.py
django.urls.include
中拉入應用程序, 使應用程序中包含應用程序的路由。 當項目包含多個應用時, 此隔離很是有用。
from django.contrib import admin from django.urls import include, path urlpatterns = [ path("", include("hello.urls")), ]
保存全部已修改的文件。
在 VS Code 終端中, 使用python manage.py runserver
運行開發服務器, 並打開瀏覽器以http://127.0.0.1:8000/
查看呈現 "Hello, Django" 的頁面。
恭喜, 你已使用 VS Code 和適用於 Linux 的 Windows 子系統建立了 Django web 應用程序! 有關使用 VS Code 和 Django 的更深刻教程, 請參閱Visual Studio Code 中的 Django 教程。