設定本機環境以在 Azure 上部署 Python Web 應用程式

本文將逐步引導您設定本機環境來開發 Python Web 應用程式 ,並將其部署至 Azure。 您的 Web 應用程式可以是純 Python,或使用其中一個常見的 Python 型 Web 架構,例如 DjangoFlaskFastAPI

在本機開發的 Python Web 應用程式可以部署到 Azure App 服務、Azure Container Apps 或 Azure Static Web Apps 等服務。 部署有許多選項。 例如,針對 App Service 部署,您可以選擇從程式代碼、Docker 容器或靜態 Web 應用程式部署。 如果您從程式代碼部署,您可以使用 Visual Studio Code、Azure CLI、本機 Git 存放庫,或使用 GitHub 動作進行部署。 如果您在 Docker 容器中部署,您可以從 Azure Container Registry、Docker Hub 或任何私人登錄執行此動作。

在繼續本文之前,建議您先檢閱 設定開發環境 ,以取得針對 Python 和 Azure 設定開發環境的指引。 以下我們將討論 Python Web 應用程式開發專屬的設定和設定。

取得 Python Web 應用程式開發的本機環境設定之後,您就可以開始處理下列文章:

使用 Visual Studio Code

Visual Studio Code 集成開發環境 (IDE) 是開發 Python Web 應用程式的簡單方式,可與 Web 應用程式所使用的 Azure 資源搭配使用。

提示

請確定您已安裝 Python 延伸模組。 如需在 VS Code 中使用 Python 的概觀,請參閱 VS Code 中的開始使用 Python。

在 VS Code 中,您會透過 VS Code 擴充功能與 Azure 資源搭配使用。 您可以從 [ 延伸模組 檢視] 或 Ctrl+Shift+X 鍵組合安裝延伸模組。 針對 Python Web 應用程式,您可能會使用下列一或多個延伸模組:

  • Azure App 服務 延伸模組可讓您從 Visual Studio Code 內與 Azure App 服務 互動。 App Service 為 Web 應用程式提供完全受控的裝載,包括網站和 Web API。

  • Azure Static Web Apps 擴充功能可讓您直接從 VS Code 建立 Azure Static Web Apps。 靜態 Web Apps 是無伺服器,也是靜態內容裝載的絕佳選擇。

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

  • 還有其他擴充功能,例如 Azure 儲存體Azure 資料庫Azure 資源擴充功能。 您隨時可以視需要新增這些和其他擴充功能。

Visual Studio Code 中的延伸模組可存取,就像您在一般 IDE 介面中預期的那樣,並使用 VS Code 命令選擇區提供豐富的關鍵詞支援。 若要存取命令選擇區,請使用按鍵組合 Ctrl+Shift+P。 命令選擇區是查看您可以對 Azure 資源採取之所有可能動作的好方法。 下列螢幕快照顯示App Service的一些動作。

A screenshot of the Visual Studio Code command palette for App Service.

在 Visual Studio Code 中使用開發容器

Python 開發人員通常會依賴虛擬環境,針對特定專案建立隔離且獨立的環境。 虛擬環境可讓開發人員針對每個項目分別管理相依性、套件和 Python 版本,避免不同項目之間可能需要不同套件版本的衝突。

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

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

請參閱 在容器內開發。

使用 Visual Studio 2022

Visual Studio 2022 是一個功能完整的集成開發環境 (IDE),可支援 Python 應用程式開發,以及許多內建工具和延伸模組,以存取和部署至 Azure 資源。 雖然在 Azure 上建置 Python Web 應用程式的大部分檔都著重於使用 Visual Studio Code,但如果您已安裝 Visual Studio 2022,則您熟悉使用 Python Web 應用程式,並針對 .NET 或 C++ 專案使用它是絕佳的選項。

  • 一般而言,請參閱 Visual Studio |Python 檔 ,適用於在 Visual Studio 2022 上使用 Python 的相關所有檔。

  • 如需安裝步驟,請參閱 在Visual Studio 中安裝 Python 支援,以逐步引導您完成將 Python 工作負載安裝至 Visual Studio 2022 的步驟。

  • 如需使用 Python 進行 Web 開發的一般工作流程,請參閱 快速入門:使用 Visual Studio 建立您的第一個 Python Web 應用程式。 本文適用於瞭解如何從頭開始建置 Python Web 應用程式(但不包含部署至 Azure)。

  • 如需使用 Visual Studio 2022 來管理 Azure 資源並部署至 Azure,請參閱 使用 Visual Studio 進行 Azure 開發。 雖然這裡的大部分文件特別提到 .NET,但不論程式設計語言為何,管理 Azure 資源和部署至 Azure 的工具都相同。

  • 當 Visual Studio 2022 中沒有適用於指定 Azure 管理或部署工作的內建工具時,您一律 可以使用 Azure CLI 命令

使用其他 IDE

如果您正在另一個沒有明確支援 Azure 的 IDE 中工作,您可以使用 Azure CLI 來管理 Azure 資源。 在下列螢幕快照中,PyCharm IDE 中會開啟簡單的 Flask Web 應用程式。 Web 應用程式可以使用 命令部署到 Azure App 服務az webapp up。 在螢幕快照中,CLI 命令會在 PyCharm 內嵌終端模擬器內執行。 如果您的 IDE 沒有內嵌模擬器,您可以使用任何終端機和相同的命令。 Azure CLI 必須安裝在您的電腦上,而且在這兩種情況下都可以存取。

A screenshot of the PyCharm IDE with an Azure CLI command deploying a web app.

Azure CLI 命令

使用 Azure CLI 命令在本機使用 Web 應用程式時,您通常會使用下列命令:

Command 描述
az webapp 管理 Web 應用程式。 包含建立以建立 Web 應用程式的子命令,以及從本機工作區建立和部署的
az container app 管理 Azure Container Apps。
az staticwebapp 管理 Azure Static Web Apps。
az group 管理資源群組和範本部署。 使用子命令 建立 至資源群組,將您的 Azure 資源放入中。
az appservice 管理 App Service 方案。
az config 受控 Azure CLI 組態。 若要儲存擊鍵,您可以定義其他命令自動使用的預設位置或資源群組。

以下是用來建立 Web 應用程式和相關聯資源的範例 Azure CLI 命令,並使用 az webapp up 在一個命令中將其部署至 Azure。 在 Web 應用程式的根目錄中執行 命令。

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

如需此範例的詳細資訊,請參閱快速入門:將 Python(Django 或 Flask) Web 應用程式部署至 Azure App 服務

請記住,針對某些 Azure 工作流程,您也可以從 Azure Cloud Shell 使用 Azure CLI。 Azure Cloud Shell 是可經由瀏覽器存取的互動式殼層,並經過實證,適用於管理 Azure 資源。

Azure SDK 金鑰套件

在您的 Python Web 應用程式中,您可以使用適用於 PythonAzure SDK,以程式設計方式參考 Azure 服務。 此 SDK 會在使用適用於 Python 的 Azure 連結庫 (SDK) 一節中廣泛討論。 在本節中,我們將簡短提及您將在Web開發中使用的SDK一些重要套件。 而且,我們將示範使用 Azure 資源驗證程式代碼的最佳作法。

以下是 Web 應用程式開發中常用的一些套件。 您可以使用 直接 pip在虛擬環境中安裝套件。 或將 Python 套件索引 (Pypi) 名稱放在您的 requirements.txt 檔案中。

SDK 檔 安裝 Python 套件索引
Azure 身分識別 pip install azure-identity azure-identity
Azure 儲存體 Blob pip install azure-storage-blob azure-storage-blob
Azure Cosmos DB pip install azure-cosmos azure-cosmos
Azure 金鑰保存庫秘密 pip install azure-keyvault-secrets azure-keyvault-secrets

azure-identity 套件可讓您的 Web 應用程式使用 Microsoft Entra 識別碼進行驗證。 若要在 Web 應用程式程式碼中驗證,建議您在套件中使用 azure-identity DefaultAzureCredential 。 以下是如何存取Azure 儲存體的範例。 此模式與其他 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 深入資訊,請參閱 使用適用于 Python 的 Azure SDK 向 Azure 服務驗證 Python 應用程式。

以 Python 為基礎的 Web 架構

在 Python Web 應用程式開發中,您通常會使用以 Python 為基礎的 Web 架構。 這些架構提供功能,例如頁面範本、會話管理、資料庫存取,以及輕鬆存取 HTTP 要求和回應物件。 架構可讓您避免需要重新塑造一般功能的轉輪。

三個常見的 Python Web 架構是 Django Flask FastAPI 。 這些和其他 Web 架構可以搭配 Azure 使用。

以下是如何在本機快速開始使用這些架構的範例。 執行這些命令時,您最終會使用應用程式,儘管可以部署至 Azure 的簡單命令。 在 虛擬環境中 執行這些命令。

步驟 1: 使用 pip 下載架構。

pip install Django

步驟 2: 建立 hello world 應用程式。

使用 django-admin startproject 命令建立範例專案。 專案包含 manage.py 檔案,這是執行應用程式的進入點。

django-admin startproject hello_world

步驟 3: 在本機執行程式碼。

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

python hello_world\manage.py runserver

步驟 4: 流覽 hello world 應用程式。

http://127.0.0.1:8000/

此時,新增 requirements.txt 檔案,然後您可以將 Web 應用程式部署至 Azure,或使用 Docker 將它容器化,然後加以部署。

下一步