本文指导你设置本地环境以开发 Python Web 应用 并将其部署到 Azure。 Web 应用可以是纯 Python,也可以使用基于 Python 的常见 Web 框架之一,例如 Django、Flask或 FastAPI。
本地开发的 Python Web 应用可以部署到 Azure 应用服务、Azure 容器应用等服务,或 Azure 静态 Web 应用。 有许多部署选项。 例如,对于应用服务部署,可以选择从代码、Docker 容器或静态 Web 应用进行部署。 如果通过代码进行部署,可以使用 Visual Studio Code、Azure CLI、本地 Git 存储库或 GitHub Actions 进行部署。 如果在 Docker 容器中部署,可以从 Azure 容器注册表、Docker 中心或任何专用注册表执行此作。
在继续阅读本文之前,建议查看 设置开发环境,以获取有关为 Python 和 Azure 设置开发环境的指导。 下面,我们将讨论特定于 Python Web 应用开发的设置和配置。
为 Python Web 应用开发设置本地环境后,即可处理以下文章:
- 快速入门:在 Azure 应用服务中创建 Python(Django 或 Flask)Web 应用。
- 教程:在 Azure 中使用 PostgreSQL 部署 Python(Django 或 Flask)Web 应用
- 使用系统分配的托管标识创建 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 应用服务 扩展使你能够从 Visual Studio Code 中与 Azure 应用服务进行交互。 应用服务为包含网站和 Web API 的 Web 应用程序提供全面托管的主机服务。
Azure 静态 Web 应用 扩展使你可以直接从 VS Code 创建 Azure 静态 Web 应用。 静态 Web 应用是无服务器应用,非常适合用于静态内容托管。
如果打算使用容器,请安装:
用于在本地生成和使用容器的 Docker 扩展。 例如,可以使用 用于容器的 Web 应用在 Azure 应用服务上运行容器化 Python Web 应用。
Azure 容器应用 扩展,用于直接从 Visual Studio Code 创建和部署容器化应用。
还有其他扩展,例如 Azure 存储、Azure 数据库,以及 Azure 资源 扩展。 始终可以根据需要添加这些扩展和其他扩展。
使用 VS Code 命令面板,可以访问 Visual Studio Code 中的扩展,就像在典型的 IDE 接口中一样,并且具有丰富的关键字支持。 若要访问命令面板,请使用组合键 Ctrl+Shift+P。 命令面板是查看可以对 Azure 资源执行的所有可能操作的好方法。 以下屏幕截图显示了应用服务的一些操作。
在 Visual Studio Code 中使用开发容器
Python 开发人员通常依赖虚拟环境为特定项目创建独立且独立的环境。 虚拟环境允许开发人员为每个项目单独管理依赖项、包和 Python 版本,从而避免可能需要不同包版本的不同项目之间的冲突。
尽管 Python 中提供了用于管理 virtualenv
或 venv
等环境的常用选项,但 visual Studio Code 开发容器 扩展(基于 开放开发容器规范)允许将 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,但如果已安装了 Python Web 应用,则 Visual Studio 2022 是一个很好的选择,你熟悉如何使用它,并且将其用于 .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 应用。 可以使用 az webapp up
命令将 Web 应用部署到 Azure 应用服务。 在屏幕截图中,CLI 命令在 PyCharm 嵌入式终端模拟器中运行。 如果 IDE 没有嵌入式仿真器,则可以使用任何终端和相同的命令。 必须在计算机上安装 Azure CLI,并且无论哪种情况都可以访问。
Azure CLI 命令
使用 Azure CLI 命令在本地使用 Web 应用时,通常可以使用以下命令:
命令 | 描述 |
---|---|
az webapp | 管理 Web 应用。 包括子命令 创建 和 启动,分别用于创建 Web 应用或从本地工作区创建并部署。 |
az container app | 管理 Azure 容器应用。 |
az staticwebapp | 管理 Azure 静态 Web 应用。 |
az group | 管理资源组和模板部署。 使用子命令 创建 来创建一个资源组,以便将您的 Azure 资源放入其中。 |
az appservice | 管理应用服务计划。 |
az config | 管理 Azure CLI 配置。 若要保存击键,可以定义其他命令自动使用的默认位置或资源组。 |
下面是一个示例 Azure CLI 命令,用于创建 Web 应用和相关资源,并使用 az webapp up在一个命令中将其部署到 Azure。 在 Web 应用的根目录中运行该命令。
az webapp up \
--runtime PYTHON:3.9 \
--sku B1 \
--logs
有关此示例的详细信息,请参阅 快速入门:将 Python(Django 或 Flask)Web 应用部署到 Azure 应用服务。
请记住,对于某些 Azure 工作流,还可以从 Azure Cloud Shell使用 Azure CLI。 Azure Cloud Shell 是一种交互式、经过身份验证且易于浏览器访问的 shell,用于管理 Azure 资源。
Azure SDK 密钥包
在 Python Web 应用中,可以使用用于 Python 的 azure SDK以编程方式引用 Azure 服务。 在第 节“使用 Azure 库(SDK)用于 Python”中广泛讨论了此 SDK。 在本部分中,我们将简要介绍将在 Web 开发中使用的 SDK 的一些密钥包。 我们将介绍有关使用 Azure 资源对代码进行身份验证的最佳做法的示例。
下面是 Web 应用开发中常用的一些包。 可以使用 pip
直接在虚拟环境中安装包。 或者将 Python 包索引 (Pypi) 名称放入 requirements.txt 文件中。
SDK docs | 安装 | Python 包索引 |
---|---|---|
Azure Identity | 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 ID 进行身份验证。 若要在 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
逻辑的详细信息,请参阅 使用 Azure SDK for Python 在 Azure 服务中对 Python 应用进行身份验证。
基于 Python 的 Web 框架
在 Python Web 应用开发中,通常使用基于 Python 的 Web 框架。 这些框架提供页面模板、会话管理、数据库访问和对 HTTP 请求和响应对象的轻松访问等功能。 框架使你不必为公共功能反复做同样的工作。
三个常见的 Python Web 框架 Django、Flask或 FastAPI。 这些框架和其他 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 对其进行容器化,然后部署它。
后续步骤
- 快速入门:在 Azure 应用服务中创建 Python(Django 或 Flask)Web 应用。
- 教程:在 Azure 中使用 PostgreSQL 部署 Python(Django 或 Flask)Web 应用
- 使用系统分配的托管标识创建 Flask Web 应用并将其部署到 Azure