共用方式為


設定您的本地環境以部署 Azure 上的 Python 網頁應用程式

本文將教你如何設定本地環境來開發 Python web 應用程式並部署到Azure。 你的網頁應用程式可以是純Python,或使用常見的Python基礎網頁框架,如DjangoFlask,或FastAPI

你可以將本地開發的Python網頁應用程式部署到像是 Azure App ServiceAzure Container AppsAzure Static Web Apps 等服務上。 部署有許多選項。 例如,針對 App Service 部署,您可以選擇從程式代碼、Docker 容器或靜態 Web 應用程式進行部署。 如果你是從程式碼部署,可以透過使用 Visual Studio Code、Azure CLI、本地 Git 倉庫或 GitHub 動作來部署。 如果你部署在 Docker 容器中,可以從 Azure Container Registry、Docker Hub 或任何私人登錄檔進行。

在繼續閱讀本文前,請先閱讀 設置你的開發環境,以獲得如何為 Python 和 Azure設置開發環境的指引。 以下章節將討論 Python 網頁應用程式開發的特殊設定與設定。

當你為 Python 網頁應用程式開發建立好本地環境後,你就準備好著手以下文章了:

在 Visual Studio Code 中進行作業

Visual Studio Code 整合開發環境(IDE)是一種簡便的方式,可以開發Python網頁應用程式,並使用網頁應用程式所使用的Azure資源。

提示

記得安裝 Python 擴充功能。 關於在 VS Code 中與Python合作的概述,請參見 Getting Started with Python in VS Code

在 VS Code 中,你會透過 VS Code 擴充功能來操作Azure資源。 你可以從 擴充功能 檢視中安裝擴充功能,或使用按鍵組合 Ctrl+Shift+X 來安裝擴充功能。 對於 Python 網頁應用程式,你很可能會使用以下一個或多個擴充功能之一:

  • Azure App Service擴充功能讓你能從Visual Studio Code內部與Azure App Service互動。 App Service 為 Web 應用程式提供完全受控的裝載,包括網站和 Web API。

  • Azure Static Web Apps 擴充功能讓你能直接從 VS Code 建立Azure Static Web Apps。 Static Web Apps 是無伺服器的,是靜態內容主機的好選擇。

  • 如果你打算使用容器,請安裝:

    • Docker 擴充功能,能在本地建置並處理容器。 例如,你可以在 Azure App Service 上執行容器化的 Python 網頁應用程式,方法是使用 Web Apps for Containers

    • Azure Container Apps擴充功能,可直接從Visual Studio Code建立並部署容器化應用程式。

  • 其他擴充功能包括 Azure StorageAzure 資料庫,以及 Azure Resources 擴充功能。 您隨時可以視需要新增這些和其他擴充功能。

在 Visual Studio Code 中,擴充功能可如同典型 IDE 介面一樣容易存取。 你可以透過 VS Code 指令面板來使用豐富的關鍵字支援。 若要存取命令選擇區,請使用按鍵組合 Ctrl+Shift+P。 命令面板是查看 Azure 資源上所有可能操作的好方法。 以下截圖展示了 App Service 的一些操作。

Visual Studio Code 中 App Service 命令面板的截圖。

在 Visual Studio Code 中使用開發容器

Python 開發者常依賴虛擬環境來為特定專案打造獨立且自成一格的環境。 虛擬環境讓開發者能分別管理每個專案的相依、套件和 Python 版本,避免不同專案間可能需要不同套件版本的衝突。

雖然 Python 中有像 virtualenvvenv這類環境管理的熱門選項,但基於 開放開發容器規範Visual Studio Code Dev Container 擴充功能,讓你能將 Docker 容器 作為一個功能完整的容器化環境。 它可讓開發人員使用預先設定的所有必要工具、相依性和延伸模組,定義一致且容易重現的工具鏈。 這表示如果你有系統需求、shell 設定,或是完全使用其他語言,都可以用開發容器明確配置專案中那些可能存在於基本 Python 環境之外的部分。

例如,開發人員可以設定單一開發容器,以包含專案上運作所需的所有專案,包括 PostgreSQL 資料庫伺服器以及專案資料庫和範例數據、Redis 伺服器、Nginx、前端程式代碼、React 等客戶端連結庫等。 此外,容器還會包含專案程式碼、Python 執行環境,以及所有 Python 專案相依關係,且版本正確。 最後,容器可以指定安裝 Visual Studio Code 擴充功能,讓整個團隊都能使用相同的工具。 因此,當新的開發人員加入小組時,整個環境,包括工具、相依性和數據,都準備好複製到其本機計算機,而且可以立即開始工作。

參見 「容器內開發」。

使用 Visual Studio 2022

Visual Studio 2022 是一個功能完整的整合開發環境(IDE),支援Python應用程式開發,並內建多種工具與擴充功能,方便存取及部署至Azure資源。 雖然大多數關於在 Azure 上建置Python網頁應用程式的文件都著重於使用 Visual Studio Code,但如果你已經安裝了 Visual Studio 2022,且你對它有信心,並且用於 .NET 或 C++ 專案,它是個很棒的選擇。

  • 一般而言,請參見 Visual Studio |Python文件 關於 2022 Visual Studio 使用 Python 的所有相關文件。

  • 關於設定步驟,請參考 Visual StudioInstall Python support>,裡面會一步步將 Python 工作負載安裝到 Visual Studio 2022 中。

  • 關於使用 Python 進行網頁開發的一般工作流程,請參考 快速入門:使用 Visual Studio 建立你的第一個Python網頁應用程式。 這篇文章對於了解如何從零開始建構 Python 網頁應用程式很有幫助(但不包含部署到 Azure 的過程)。

  • 關於使用 Visual Studio 2022 來管理Azure資源並部署到Azure,請參見 Azure 與 Visual Studio 的開發。 雖然這裡很多文件都特別提到 .NET,但管理 Azure 資源和部署到 Azure 的工具,無論用哪種程式語言,運作方式都一樣。

  • 當 2022 Visual Studio 沒有內建工具可用於特定Azure管理或部署任務時,你隨時可以使用 Azure CLI 指令

使用其他 IDE

如果你使用的是沒有明確支援 Azure 的 IDE,請使用 Azure CLI 來管理 Azure 資源。 以下截圖中, PyCharm IDE 中開啟了一個簡單的 Flask 網頁應用程式。 你可以使用 az webapp up 指令將網頁應用程式部署到 Azure App Service。 在螢幕快照中,CLI 命令會在 PyCharm 內嵌終端模擬器內執行。 如果你的 IDE 沒有內建模擬器,你可以用任何終端機和相同的指令。 Azure CLI 必須安裝在你的電腦上,且無論哪種情況都必須能存取。

一張 PyCharm IDE 的截圖,搭配 Azure CLI 指令部署網頁應用程式。

Azure CLI 指令

當你在本地使用 Azure CLI 指令處理網頁應用程式時,通常會使用以下指令:

命令 描述
AZ webapp 管理 Web 應用程式。 包含 createup 子指令,分別用於建立網頁應用程式或從本地工作區建立與部署。
az 容器應用程式 管理 Azure 容器應用程式。
az staticwebapp 管理 Azure Static Web Apps。
AZ 群組 管理資源群組和範本部署。 使用子指令 create建立一個資源群組來放置你的Azure資源。
AZ AppService 管理 App Service 方案。
az config 管理 Azure CLI 配置。 若要儲存擊鍵,您可以定義其他命令自動使用的預設位置或資源群組。

這是一個 Azure CLI 的範例指令,使用 az webapp up 來一次性建立網頁應用程式及相關資源,並將其部署到 Azure。 在 Web 應用程式的根目錄中執行 命令。

az webapp up \
    --runtime PYTHON:3.9 \
    --sku B1 \
    --logs

欲了解更多此範例資訊,請參見 快速入門:部署 Python(Django 或 Flask)網頁應用程式至 Azure App Service

請記得,對於某些 Azure 工作流程,你也可以從 Azure Cloud Shell 使用 Azure CLI。 Azure Cloud Shell 是一個具互動性、已驗證且可透過瀏覽器存取的 Shell,用於管理 Azure 資源。

Azure SDK 關鍵套件

在你的 Python 網頁應用程式中,你可以以程式方式使用 Azure 服務,方法是使用 Azure SDK 適用於 Python使用 Python 的 Azure 程式庫(SDK)章節有詳細討論此 SDK。 在本節中,你會了解在網頁開發中使用的一些 SDK 關鍵套件。 你也看到一個範例,遵循使用 Azure 資源驗證程式碼的最佳實務。

下表列出了一些網頁應用程式開發中常用的套件。 你可以直接使用 pip 命令在虛擬環境中安裝套件。 或者,將Python套件索引(PyPI)名稱放在你的 requirements.txt 檔案中。

SDK 文檔 安裝 Python 套件索引
Azure 身份 pip install azure-identity azure-identity
Azure Storage Blob pip install azure-storage-blob azure-storage-blob
Azure Cosmos DB pip install azure-cosmos 蔚藍宇宙
Azure Key Vault 機密 pip install azure-keyvault-secrets azure-keyvault-secrets

azure-identity 套件允許你的網頁應用程式與 Microsoft Entra ID 進行認證。 要在您的網頁應用程式代碼中進行身份驗證,請使用 azure-identity 驗證工具包中的 。 以下範例說明如何存取 Azure Storage。 其他 Azure 資源的模式也類似。

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

azure_credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
    account_url=account_url,
    credential=azure_credential)

DefaultAzureCredential 會在預設位置尋找帳號資訊,例如環境變數或Azure CLI登入。 欲深入了解 DefaultAzureCredential 的概念,請參見 使用 Azure Python SDK 驗證 Python 應用程式以存取 Azure 服務

基於 Python 的網頁框架

在 Python 網頁應用程式開發中,你經常會使用基於 Python 的網頁框架。 這些架構提供功能,例如頁面範本、會話管理、數據庫存取,以及輕鬆存取 HTTP 要求和響應物件。 框架讓你避免為了實現常見功能而重新發明輪子。

三種常見的 Python 網頁框架分別是 DjangoFlask 以及 FastAPI。 你可以用這些和其他網頁框架搭配 Azure。

以下範例展示了你如何快速在本地開始使用這些框架。 當你執行這些指令程式時,你會得到一個應用程式,雖然這個應用程式很簡單,但你仍然可以將它部署到 Azure。 在 虛擬環境中執行這些指令。

步驟一: 使用 PIP 下載框架。

pip install Django

步驟二: 建立一個 hello world 應用程式。

請使用 django-admin startproject 指令建立範例專案。 專案包含一個 manage.py 檔案,作為執行應用程式的入口。

django-admin startproject hello_world

步驟三: 在本地執行程式碼。

Django 會使用 WSGI 來執行應用程式。

python hello_world\manage.py runserver

步驟四: 瀏覽 hello world 應用程式。

http://127.0.0.1:8000/

此時,新增一個 requirements.txt 檔案。 接著,將網頁應用程式部署到 Azure,或用 Docker 容器化並部署。

後續步驟