开始在 Azure 上使用 Python

使用本文档作为检查列表和指南,开始开发将托管在云中或利用云服务的 Python 应用程序。 如果按照本文档中的链接和说明操作,你将:

  • 了解云是什么,以及如何使用云设计应用程序。
  • 设置本地开发环境,包括构建基于云的应用程序所需的工具和库。
  • 了解开发基于云的应用程序时的工作流。

阶段 1:了解概念

如果你不熟悉为云开发应用程序,此简短系列包含视频的文章将帮助你快速加快速度。

了解为云开发应用程序的基础知识后,需要设置开发环境,并按照快速入门或教程生成第一个应用。

阶段 2:为 Azure 开发配置本地 Python 环境

若要使用 Azure 开发 Python 应用程序,首先需要配置本地开发环境。 配置包括创建 Azure 帐户、安装用于 Azure 开发的工具,以及将这些工具连接到 Azure 帐户。

在 Azure 上进行开发需要 Python 3.8 或更高版本。 若要验证工作站上的 Python 版本,请在控制台窗口中键入 macOS/Linux 或 py --version Windows 的命令python3 --version

创建 Azure 帐户

若要使用 Azure 开发 Python 应用程序,需要一个 Azure 帐户。 Azure 帐户是用于登录 Azure 的凭据,以及用于创建 Azure 资源的凭据。

如果使用 Azure 工作,请与公司的云管理员联系,获取用于登录 Azure 的凭据。

否则,可以免费创建一个 Azure 帐户,并免费接收 12 个月的常用服务,以及 200 美元的信用额度,用于浏览 Azure 30 天。

使用 Azure 门户

获取凭据后,即可登录到Azure 门户https://portal.azure.com Azure 门户通常是开始使用 Azure 的最简单方法,尤其是在不熟悉 Azure 和云开发时。 在Azure 门户中,可以执行各种管理任务,例如创建和删除资源。

如果已熟悉 Azure 和云开发,则可能开始使用 Visual Studio Code 和 Azure CLI 等工具。 Python 开发人员中心中的文章演示如何使用 Azure 门户、Visual Studio Code 和 Azure CLI。

使用 Visual Studio Code

开发 Azure 时,可以使用任何编辑器或 IDE 编写 Python 代码。 但是,可能需要考虑使用 Visual Studio Code 进行 Azure 和 Python 开发。 Visual Studio Code 为 Azure 和 Python 提供了许多扩展和自定义,使开发周期和从本地环境到 Azure 的部署更加轻松。

对于使用 Visual Studio Code 的 Python 开发,请安装:

  • Python 扩展。 此扩展包括 IntelliSense (Pylance)、Linting、Debugging(多线程、远程)、Jupyter Notebook、代码格式、重构、单元测试等。

  • Azure 工具扩展包。 该扩展包包含用于在一个方便的包中使用 Azure App 服务、Azure Functions、Azure 存储、Azure Cosmos DB 和 Azure 虚拟机的扩展。 借助 Azure 扩展,可以轻松发现 Azure 并与 Azure 交互。

从 Visual Studio Code 安装扩展:

  1. Ctrl+Shift+X 打开“扩展”窗口。
  2. 搜索 Azure Tools 扩展。
  3. 选择“安装”按钮 。

Screenshot of the Visual Studio Code showing extensions panel searching for the Azure Tools extension pack.

要详细了解如何在 Visual Studio Code 中安装扩展,请参阅 Visual Studio Code 网站上的扩展市场文档。

安装 Azure 工具扩展后,使用 Azure 帐户登录。 左侧面板上会出现一个 Azure 图标。 选择此图标,此时将显示 Azure 服务的控制面板。 选择 “登录到 Azure...” 以完成身份验证过程。

Screenshot of the Visual Studio Code showing how to sign-in the Azure tools to Azure.

注意

如果出现错误“找不到名为 [订阅 ID] 的订阅”,这可能是因为你使用了代理,因此无法访问 Azure API。 在终端中使用代理信息配置 HTTP_PROXYHTTPS_PROXY 环境变量:

# Windows
set HTTPS_PROXY=https://username:password@proxy:8080
set HTTP_PROXY=http://username:password@proxy:8080
# macOS/Linux
export HTTPS_PROXY=https://username:password@proxy:8080
export HTTP_PROXY=http://username:password@proxy:8080

使用 Azure CLI

除了Azure 门户和 Visual Studio Code 之外,Azure 还提供用于创建和管理 Azure 资源的 Azure CLI 命令行工具。 Azure CLI 在效率、可重复性和可编写重复性任务脚本方面具有优势。 实际上,大多数开发人员同时使用 Azure 门户和 Azure CLI。

安装 Azure CLI,在工作站上的终端窗口中键入命令az login,从 Azure CLI 登录到 Azure 帐户。

az login

Azure CLI 将打开默认浏览器以完成登录过程。

配置 Python 虚拟环境

为 Azure 创建 Python 应用程序时,建议为每个应用程序创建 虚拟环境 。 虚拟环境是特定版本的 Python 的自包含目录,以及该应用程序所需的其他包。

若要创建虚拟环境,请执行以下步骤。

  1. 打开终端或命令提示符。

  2. 为项目创建一个文件夹。

  3. 创建虚拟环境:

    # py -3 uses the global python interpreter. You can also use python3 -m venv .venv.
    py -3 -m venv .venv
    

    此命令运行 Python venv 模块,并在文件夹“.venv”中创建虚拟环境。 通常,.gitignore 文件具有“.venv”条目,以便虚拟环境不会检查代码检查ins。

  4. 激活虚拟环境:

    .venv\Scripts\activate
    

    注意

    如果使用的是 Windows Command shell,请使用 .venv\Scripts\activate.. 如果在 Windows 上的 Visual Studio Code 中使用 Git Bash,请改用该命令 source .venv/Scripts/activate

激活该环境(Visual Studio Code 自动执行该操作)后,运行 pip install 将库安装到该环境中。 在虚拟环境中运行的 Python 代码使用安装到该虚拟环境中的特定包版本。 使用不同的虚拟环境,不同的应用程序可以使用包的不同版本,这有时是必需的。 若要了解有关虚拟环境的详细信息,请参阅 Python 文档中的虚拟环境和包

例如,如果 要求 位于 requirements.txt 文件中,则在激活的虚拟环境中,可以使用以下命令安装它们:

pip install -r requirements.txt

阶段 3:了解 Azure 开发工作流

上一篇文章:预配、访问和管理资源

至此,你已了解 Azure 的服务和资源模型。现在可以了解使用 Azure 开发云应用的整个流:预配、编码、测试、部署和管理

步骤 主要工具 活动
预配 Azure CLI, Azure 门户, VS Code Azure 工具扩展, Cloud Shell, Python 脚本使用 Azure SDK 管理库 创建资源组并在这些组中创建资源;配置资源,以便从应用代码使用,并/或准备好在部署中接收 Python 代码。
代码 代码编辑器(如 Visual Studio Code 和 PyCharm),Azure SDK 客户端库,参考文档 使用 Azure SDK 客户端库编写 Python 代码,以便与预配的资源交互。
测试 Python 运行时、调试器 针对活动的云资源(通常为开发或测试资源,而不是生产资源)在本地运行 Python 代码。 代码本身尚未托管在 Azure 上,这有助于快速调试和迭代。
部署 VS Code、Azure CLI、GitHub Actions、Azure Pipelines 在本地测试代码后,将其部署到相应的 Azure 托管服务,在该服务中,代码本身可以在云中运行。 部署的代码通常针对过渡或生产资源运行。
管理 Azure CLI, Azure 门户, VS Code, Python 脚本, Azure Monitor 监视应用性能和响应能力,在生产环境中进行调整,将改进迁移回开发环境以进行下一轮预配和开发。

步骤 1:预配和配置资源

本系列的上一篇文章中所述,开发任何应用的第一步都是预配和配置组成应用目标环境的资源。

若要预配资源,请先在合适的 Azure 区域中创建资源组。 可以通过 Azure 门户、VS Code 和 Azure 工具扩展、Azure CLI 或使用使用 Azure SDK 管理库(或 REST API)的自定义脚本创建资源组。

在该资源组中,可以使用门户、VS Code、CLI 或 Azure SDK 再次预配和配置所需的单个资源。 (同样,有关可用资源类型的概述,请参阅 Azure 开发人员指南。)

配置包括设置访问策略,以控制哪些标识(服务主体和/或应用 ID)能够访问这些资源。 访问策略通过 Azure 基于角色的 访问控制 (RBAC)进行管理;某些服务也有更具体的访问控制。 作为使用 Azure 的云开发人员,请确保熟悉 Azure RBAC,因为只需将它与任何具有安全问题的资源一起使用。

对于大多数应用程序方案,通常使用 Azure SDK 管理库通过 Azure CLI 和/或 Python 代码创建预配脚本。 这类脚本描述了应用程序的资源需求的整体情况(本质上是定义要对其部署应用程序的自定义云计算机)。 脚本使你可以轻松地在不同的环境中重新创建同一组资源,例如开发、测试、过渡和生产。 自动执行时,可以避免在 Azure 门户 或 VS Code 中手动执行许多重复步骤。 利用此类脚本,还可以轻松地在不同的区域中预配环境,或使用不同的资源组。 如果你还要在源代码管理存储库中维护这些脚本,那么你还将拥有完整的审核和更改历史记录。

步骤 2:编写应用代码以使用资源

预配应用程序所需的资源后,可编写应用程序代码来使用这些资源的运行时部分。

例如,在预配步骤中,你可能已创建 Azure 存储帐户,在此帐户中创建了 Blob 容器,并为此容器中的应用设置了访问策略。 要了解此预配过程,可查看示例 - 预配 Azure 存储。 然后,可从代码中对此存储帐户进行身份验证,接着在此容器中创建、更新或删除 Blob。 要了解此运行时过程,可查看示例 - 使用 Azure 存储。 同样,你可能已预配具有架构和适当权限的数据库(具体请查看示例 - 预配数据库),以便应用程序代码可连接到数据库,并执行常规的“创建-读取-更新-删除”查询。

应用代码通常使用环境变量来标识要使用的资源的名称和 URL。 使用环境变量可以在云环境(开发、测试、过渡和生产)之间轻松切换,而无需对代码进行任何更改。 各种托管应用程序代码的 Azure 服务提供了一种方法来定义必要的变量。 例如,在Azure App 服务(托管 Web 应用)和 Azure Functions(适用于 Azure 的无服务器计算)中,通过 Azure 门户、VS Code 或 Azure CLI 定义应用程序设置,然后将应用程序设置显示为环境变量。

作为 Python 开发人员,你可能使用适用于 Python 的 Azure SDK 客户端库在 Python 中编写应用程序代码。 也就是说,可以使用任意受支持的语言来编写云应用的任何独立部分。 如果使用多种编程语言在团队中工作,则应用程序的某些部分可能使用 Python、一些 JavaScript、一些 Java 和其他 C# 。

应用程序代码可以使用 Azure SDK 管理库根据需要执行预配和管理操作。 同样,预配脚本可以使用 SDK 客户端库通过特定数据初始化资源,或者在云资源上执行管家任务,即使这些脚本在本地运行也是如此。

步骤 3:在本地测试和调试应用代码

开发人员通常希望在将代码部署到云之前在其本地工作站上测试应用代码。 在本地测试应用代码意味着通常访问已在云中预配的其他资源,例如存储、数据库等。 不同之处在于,你还没有在云服务中运行应用代码本身。

通过在本地运行代码,还可以充分利用 Visual Studio Code 等工具提供的调试功能,并在源代码管理存储库中管理代码。

无需修改代码进行本地测试:Azure 完全支持使用部署到云的相同代码进行本地开发和调试。 环境变量再次是密钥:在云中,代码可以作为环境变量访问托管资源的设置。 在本地创建这些相同的环境变量时,将运行相同的代码,而无需修改。 此模式适用于身份验证凭据、资源 URL、连接字符串和任意数量的其他设置,这样可以在本地运行代码时轻松地使用开发环境中的资源,并在将代码部署到云后轻松使用生产资源。

步骤 4:将应用代码部署到 Azure

在本地测试完代码后,就可以将代码部署到你已预配为托管代码的 Azure 资源。 例如,若要编写 Django Web 应用,可以将相应代码部署到虚拟机(在其中提供你自己的 Web 服务器),也可以部署到 Azure 应用服务(它为你提供 Web 服务器)。 部署完成后,此代码就会在服务器上运行,而不是在本地计算机上运行,并能访问其已获授权的所有 Azure 资源。

如上一部分所述,在典型的开发过程中,首先要将代码部署到你已在开发环境中预配的资源。 经过一轮测试后,你将代码部署到过渡环境中的资源,这样应用就可供测试团队使用,并可能对预览客户可用。 对应用的性能感到满意后,就可以将代码部署到生产环境。 所有这些部署还可以使用 Azure Pipelines 和 GitHub Actions 通过持续集成和持续部署来自动化。

但是,一旦代码部署到云,它就会真正成为一个云应用程序,完全在 Azure 数据中心的服务器计算机上运行。

步骤 5:管理、监视和修订

部署后,你需要确保应用能够正常运行,不仅能响应客户请求,还能高效地(以最低成本)使用资源。 可以根据需要管理 Azure 自动缩放部署的方式,可以使用 Azure 门户、VS Code、Azure CLI 或使用 Azure SDK 库编写的自定义脚本收集和监视性能数据。 然后,可以对预配的资源进行实时调整,从而优化性能,同样也可以使用相同的工具。

通过监视,可以获得有关如何重新构建云应用的见解。 例如,你可能会发现,与主要部分相比,Web 应用的某些部分(如一组 API 终结点)只是偶尔使用。 然后,可以选择将这些 API 单独部署为无服务器 Azure Functions。 作为函数,它们有自己的支持计算资源,这些资源不与主要应用程序竞争,但每月只需花费一分钱。 这样,主应用就可以更快地响应更多的客户,而不必纵向扩展到更高的成本层。

后续步骤

现在,你已经熟悉了 Azure 的基本结构和整个开发流:预配资源,编写和测试代码,将代码部署到 Azure,然后监视和管理这些资源。