本文介绍如何设置本地环境以开发 Python web 应用并将其部署到Azure。 Web 应用可以是纯Python,也可以使用基于Django、Flask或FastAPI等常见基于Python的 Web 框架之一。
可以将本地开发的Python Web 应用部署到 Azure App Service、Azure Container Apps 或 Azure Static Web Apps 等服务。 有许多部署选项。 例如,对于应用服务部署,可以选择从代码、Docker 容器或静态 Web 应用进行部署。 如果从代码部署,可以使用 Visual Studio Code、Azure CLI、本地 Git 存储库或 GitHub 操作进行部署。 如果在 Docker 容器中部署,可以从 Azure Container Registry、Docker Hub 或任何专用注册表执行此作。
在继续阅读本文之前,请查看 设置开发环境,获取有关为Python和Azure设置开发环境的指导。 以下部分讨论特定于Python Web 应用开发的设置和配置。
为Python Web 应用开发设置本地环境后,即可处理以下文章:
Quickstart:在 Azure App Service0 中创建 Python (Django 或 Flask) Web 应用。 Tutorial:在 Azure - 创建并将 Flask Web 应用部署到 Azure,使用系统分配的托管标识
使用 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 Service 扩展可以从Visual Studio Code内与Azure App Service进行交互。 应用服务为包含网站和 Web API 的 Web 应用程序提供全面托管的主机服务。
使用 Azure Static Web Apps 扩展可以直接从 VS Code 创建Azure Static Web Apps。 Static Web Apps无服务器,是静态内容托管的一个不错的选择。
如果打算使用容器,请安装:
用于在本地生成和使用容器的 Docker 扩展。 例如,可以使用用于容器的 Web Apps 在 Azure App Service 上运行容器化Python Web 应用。
Azure Container Apps 扩展,用于直接从Visual Studio Code创建和部署容器化应用。
其他扩展包括 Azure Storage、Azure Databases 和 Azure Resources 扩展。 始终可以根据需要添加这些扩展和其他扩展。
Visual Studio Code中的扩展可按预期在典型的 IDE 接口中访问。 可以使用 VS Code 命令面板来使用丰富的关键字支持。 若要访问命令面板,请使用组合键 Ctrl+Shift+P。 命令面板是查看可以对 Azure 资源执行的所有可能的操作的好方法。 以下屏幕截图显示了应用服务的一些操作。
&lst;c2&lst;&lst;c1&lst;<c0><sb0> Visual Studio Code 应用服务命令面板的屏幕截图</sb0></c0></c1></c2>
在 Visual Studio Code 中使用开发容器
Python开发人员通常依赖虚拟环境为特定项目创建独立且独立的环境。 虚拟环境允许开发人员为每个项目单独管理依赖项、包和Python版本,从而避免可能需要不同包版本的不同项目之间的冲突。
虽然在管理 virtualenv 或 venv 等环境的Python中提供了常用选项, 使用 Visual Studio Code Dev Container 扩展(基于 open 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 Web 应用的文档都侧重于使用Visual Studio Code,但如果已安装 Visual Studio 2022,则非常适合使用它,并且已将其用于 .NET 或 C++ 项目。
一般情况下,请参阅 Visual Studio |Python文档与在 2022 Visual Studio 上使用Python相关的所有文档。
有关安装步骤,请参阅 在 Visual Studio 中安装 Python 支持,其中指导你完成将 Python 工作负载安装到 Visual Studio 2022 中的步骤。
有关使用 web 开发Python的常规工作流,请参阅
Quickstart:使用 Visual Studio0 创建第一个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 应用。 可以使用 az webapp up 命令将 Web 应用部署到Azure App Service。 在屏幕截图中,CLI 命令在 PyCharm 嵌入式终端模拟器中运行。 如果 IDE 没有嵌入式仿真器,则可以使用任何终端和相同的命令。 Azure CLI必须安装在您的计算机上,并且可在任一情况下访问。
Azure CLI命令
使用 Azure CLI 命令在本地使用 Web 应用时,通常使用以下命令:
| 命令 | 描述 |
|---|---|
| az webapp | 管理 Web 应用。 包括 创建 和 启动 的子命令,分别用于创建一个 Web 应用和从本地工作区进行创建和部署。 |
| az container app | 管理Azure Container Apps。 |
| az staticwebapp | 管理Azure Static Web Apps。 |
| az group | 管理资源组和模板部署。 使用子命令 create 将Azure资源放入资源组。 |
| az appservice | 管理应用服务计划。 |
| az config | 管理Azure CLI配置。 若要保存击键,可以定义其他命令自动使用的默认位置或资源组。 |
下面是一个示例的 Azure CLI 命令,通过使用 az webapp up 创建 Web 应用和相关资源,并在一个命令中将其部署到 Azure。 在 Web 应用的根目录中运行该命令。
az webapp up \
--runtime PYTHON:3.9 \
--sku B1 \
--logs
有关此示例的详细信息,请参阅 Quickstart:将 Python (Django 或 Flask) Web 应用部署到 Azure App Service。
请记住,对于某些Azure工作流,还可以使用 Azure Cloud Shell 中的Azure CLI。 Azure Cloud Shell是用于管理Azure资源的交互式、经过身份验证且易于浏览器访问的 shell。
Azure SDK密钥包
在 Python Web 应用中,可以使用 Azure SDK Python 以编程方式引用Azure服务。
下表列出了 Web 应用开发中常用的一些包。 可以直接在虚拟环境中使用pip安装软件包。 或者,将Python包索引 (PyPI) 名称放在 requirements.txt 文件中。
| SDK 文档 | 安装 | Python包索引 |
|---|---|---|
| Azure 标识 | pip install azure-identity |
azure-identity |
| Azure Storage Blobs | pip install azure-storage-blob |
azure-storage-blob |
| Azure Cosmos DB | pip install azure-cosmos |
azure-cosmos |
| Azure Key Vault 密钥 | pip install azure-keyvault-secrets |
Azure 密钥保管库密钥 |
azure-identity 包允许 Web 应用使用 Microsoft Entra ID 进行身份验证。 若要在 Web 应用代码中进行身份验证,请使用包中的 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 SDK for Python 认证 Python 应用程序以连接 Azure 服务。
基于Python的 Web 框架
在Python Web 应用开发中,通常使用基于Python的 Web 框架。 这些框架提供页面模板、会话管理、数据库访问和对 HTTP 请求和响应对象的轻松访问等功能。 框架使你能够避免为常见功能重塑滚轮。
Django、Flask 和 FastAPI 有三个 Python常见的 web 框架。 可以将这些和其他 Web 框架用于Azure。
以下示例演示如何在本地快速开始使用这些框架。 运行这些命令时,您最终会得到一个应用程序,尽管它是一个可以部署到 Azure 的简单应用程序。 在 虚拟环境中运行这些命令。
步骤 1: 使用 pip 下载框架。
步骤 2: 创建 hello world 应用。
使用 django-admin startproject 命令创建示例项目。 该项目包括一个 manage.py 文件,该文件用作运行应用的入口点。
django-admin startproject hello_world
步骤 3: 在本地运行代码。
步骤 4: 浏览 hello world 应用。
此时,添加 requirements.txt 文件。 然后,将 Web 应用部署到 Azure,或者使用 Docker 对其进行容器化并部署。
后续步骤
Quickstart:在 Azure App Service0 中创建 Python (Django 或 Flask) Web 应用。 Tutorial:在 Azure - 创建和部署一个带有系统分配托管标识的 Flask Web 应用到 Azure