2023 年要掌握的 25 个 Python 框架
已发表: 2023-04-28Python 已迅速成为最流行的编程语言之一,因为它的简单性、多功能性以及可供学习该语言的人使用的丰富资源。 它通常是初学者学习的第一门语言,并且在行业中也广泛用于从 Web 开发到数据分析的各种目的。
Python 社区非常庞大,根据 GitHub 的数据,Python 一直在增长,截至 2022 年增长了 22.5%。它也是 2023 年第三大使用编程语言。这是我们可以访问各种各样的语言的主要原因框架,其中大部分是开源的。
在本文中,我们将剖析 2023 年你应该了解的最流行和最有用的 Python 框架。
什么是 Python 框架?
Python 框架是 Python 模块的集合,它提供了一组通用功能,可用作构建任何类型应用程序的结构。
框架旨在通过提供关于我们应该如何构建软件的一般指南并抽象出一些更复杂或重复的任务来简化开发过程。 这使您可以专注于为您的应用程序编写独特的自定义逻辑,而不必重新发明轮子。
重复性任务的一个示例是处理 HTTP 请求。 由于大多数 Web 应用程序需要处理此类请求,因此开发人员使用现有的框架来促进此功能,而不是从头开始编写所有内容或在不同项目中重复使用相同的代码。
现在我们已经明确了框架的概念,让我们来探索一些类型的 Python 框架。
Python 框架的类型
Python 有多种框架可供不同类型的开发使用。 让我们来看看其中的几个。
全栈框架
全栈 Python 框架是一组工具,可提供开发人员从头到尾构建完整 Web 应用程序所需的一切。
这包括创建前端的方法——例如,模板系统和向用户显示信息的方法——以及后端,包括创建数据库记录、处理 HTTP 请求和控制应用程序安全性等常用功能。
微架构
微框架是一个极简框架,它只提供构建某种应用程序所需的基本组件。
它被设计为轻量级且易于扩展,使其成为小型项目或希望对其代码有更多控制权的开发人员的理想选择。
异步框架
异步框架旨在处理并发性和并行性,允许开发人员构建可以同时执行多个任务的应用程序。
Python 包管理器 (pip)
pip 是 Python 包的包管理器。 如果您已经安装了 Python,则可以访问 pip 的命令行界面,它允许您安装 Python 包。
包是一个独立且可重用的代码集合,它提供特定功能来解决常见任务(Web 开发、身份验证、GUI)。 我们接下来要看到的所有框架都是 Python 标准库的一部分,这意味着它们可以作为 pip 包使用。
您可以使用以下命令安装 Python 包索引 (PyPI) 上可用的任何包:
pip install package-name
您还可以使用以下命令从文本文件(例如,项目的需求文件)安装包。
pip install -r requirements.txt
Python 框架与 Python 库
Python 库是可用于执行特定任务(例如解析数据或生成随机数)的函数和方法的集合。 库通常在范围上更受限制,旨在用作更大应用程序中的工具。
另一方面,Python 框架提供了一套完整的工具和功能,可用于构建整个应用程序。 它通常定义软件开发人员在创建项目时遵循的工作流程。
这并不意味着您不能使用其他包(通常称为插件)来扩展框架的功能。
为什么使用 Python 框架?
在开发应用程序时使用 Python 框架有几个好处。 让我们回顾一下其中的一些:
- 框架使软件开发人员的工作更轻松:通过提供代码结构以及一组简化开发过程的工具和功能,框架可以使开发人员更轻松、更高效地构建应用程序。
- 框架促进代码组织:设计良好的框架有助于确保代码的组织性和可维护性,使日后更容易理解和修改源代码。
- 框架可以提高生产力:通过提供预构建的组件和工具并遵守行业标准,框架允许开发人员专注于其应用程序的独特方面,而不是将时间花在基本任务上。
现在您已经有了足够的理论背景,让我们回顾一下 2023 年排名前 25 位的 Python 框架。
2023 年排名前 25 的 Python 框架
这里有 25 个最流行的 Python 框架,按功能分为几个部分。
Python 微框架
以下是轻量级的微框架,当你想快速创建一个简单的应用程序或在你的服务器中消耗很少的内存时很有用。
烧瓶
Flask 是一个轻量级的微型框架,用于快速构建简单的 Web 应用程序。 它包括对 Jinja 模板(一种重用 HTML 代码的方法)、请求处理和应用程序信号的支持。
启动一个 Flask 应用程序真的只需要不到六行代码:
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "Hello Kinsta"
特征:
- 重量轻且易于使用
- 高灵活性
- 建立在 Python 标准库之上
- 支持路由和视图(控制器)
- 支持使用 Jinja 进行模板化
- 很棒的文档和社区
- 支持处理 cookie 和用户身份验证
您还可以访问一些扩展包,例如 Flask-RESTful,它增加了对构建强大的 REST API 的支持,以及 Flask-SQLAlchemy,这是一种在 Flask 应用程序中使用 SQLAlchemy 的便捷方式。
瓶子
想要创建没有其他依赖项的非常轻的 Web 应用程序吗? Bottle 是一个轻量级的 Python 微框架,旨在轻松构建中小型 Web 应用程序。 除了 Python 标准库之外,它不包含任何外部依赖项,
Bottle 建立在 WSGI(Web 服务器网关接口)标准之上,并与大多数 Web 服务器和 Python 版本兼容。
特征:
- 易于学习和使用
- 内置模板系统
- 适用于构建小型 Web 应用程序和 API
- 非常低的内存使用率
- HTTP、表单和路由支持
樱桃派
CherryPy 是 Python 的简约 Web 应用程序开发框架。 它是一个面向对象的框架 (OOP),允许您像使用 Python 中的任何其他 OOP 一样构建 Web 应用程序。
它自 2002 年问世以来,已在各种网站的生产环境中广泛采用,从功能简单的网站到要求高度复杂的网站。 例如,大型软件服务 Netflix 和 Hulu 都使用 CherryPy 作为其基础设施的一部分。
CherryPy 的主要任务是处理 HTTP 请求并将它们与开发人员编写的适当逻辑相匹配。 这意味着默认情况下,CherryPy 不提供数据库访问或 HTML 模板,将应用程序的所有逻辑留给您。
特征:
- 成熟的框架
- 处理 HTTP 请求
- 灵活可扩展的插件系统
- 仅后端框架
- 面向对象开发
- 稳定的API
Python 网络框架
以下是完整的 Web 框架,其中包括用于常见 Web 开发任务(例如数据库访问、表单处理和安全性)的组件。 与微框架不同,Python Web 框架提供了开箱即用的一切所需。
在构建 Web 应用程序时,您应该真正考虑您的需求。 有时仅仅使用 WordPress 就足够了。
姜戈
Django 是 Python 生态系统中最受欢迎和使用最广泛的 Web 框架之一。 它是一个坚如磐石的全堆栈框架,包含构建完整 Web 应用程序所需的一切。
它于 2005 年作为构建时事通讯网站的 Pythonic 方式首次推出。 如今,它是用于 Web 开发的最常用的 Python 库之一,每月有近 800 万次下载。 一些最大的网站最初是用 Django 创建的,例如 Instagram、Discus、Pinterest、Bitbucket 和 Chess.com。
Django 遵循模型-视图-模板 (MVT) 架构并包含内置功能,例如模板、数据库管理、管理面板、信号和视图(用于管理后端逻辑)。 要掌握 Django,建议您具有 Python 面向对象编程和函数式编程的强大基础。
为您的下一个 Web 项目选择 Django 不会出错。 它是一个功能强大的 Web 框架,可提供构建快速可靠的网站所需的一切。 如果您需要任何其他功能——例如,创建 REST API 以与 React 或 Angular 等现代前端框架一起使用的能力——您可以使用 Django REST 框架等扩展。
另外,Django 是通过 Kinsta 设置和部署的最简单的框架之一。
特征:
- 非常安全的框架
- 内置管理面板
- 动态显示 HTML 的专有模板语言
- 对象关系映射器 (ORM),使用 Python 类布置数据库
- 使用 Python API 查询数据库
- 出色的 CLI 工具
- 广泛的扩展
快速API
FastAPI 是一个现代 Web 框架,它可以出色地完成一件事:构建 API。
自 2018 年发布以来,由于其出色的性能和简单性,它迅速受到欢迎。 事实上,根据 PyPi Stats,FastAPI 的月下载量超过 900 万次,甚至超过了像 Django 这样的全栈框架。
请记住,FastAPI 的唯一目的是构建后端 API。 这意味着您必须有一个前端框架(如 Vue.js)才能向用户显示您的网站。
也就是说,该框架非常易于使用,您甚至可以在几分钟内通过 Kinsta 和您的 GitHub 存储库部署带有 FastAPI 的应用程序。
特征:
- 遵循 API 的开放标准,例如 OpenAPI 和 JSON 模式。
- 数据验证和序列化
- API 的自动文档
- 现代网络框架
- 基于类型声明等 Python 3.6+ 功能
- 借助 Pydantic 进行类型验证
- 异步编程支持
金字塔
Pyramid 是一个灵活且可扩展的 Web 框架,非常适合小型和大型应用程序。 它是 Flask 这样的微框架和 Django 这样的全栈框架之间的最佳结合点。
Pyramid 包含开发 Python Web 应用程序时所需的最常见功能,但它让您只关注项目所需的组件。
特征:
- 轻巧灵活
- 支持 Mako 模板语言
- 轻松实现身份验证和授权
- 符合 WSGI 的请求和响应对象
- 使用内置测试助手和交互式调试器进行简单测试和调试
- 易于集成的第三方库和插件
龙卷风
Tornado 是一个开源异步 Web 框架和网络库,用于使用 Python 构建 Web 应用程序。 它最初是在 FriendFeed 开发的,FriendFeed 是一家社交媒体聚合商,后来被 Facebook 收购。 它现在广泛用于各种应用程序,包括 Web 服务、实时分析和其他高并发应用程序。
Tornado 针对处理大量并发连接进行了优化,使其适用于需要与每个用户建立长期连接的应用程序(例如,聊天应用程序、机器人和网络抓取工具)。
特征:
- 可扩展(可以处理数千个打开的连接)
- 自定义龙卷风模板
- 内置用户身份验证
- WebSockets 和长轮询功能
- 第三方身份验证选项
- 国际化支持
图形用户界面框架
以下 Python 图形用户界面 (GUI) 框架为创建桌面应用程序提供了广泛的工具和功能,包括对事件驱动编程、小部件和图形的支持。
PyQt
PyQt 是最流行的 Qt 跨平台应用程序框架 Python 绑定集之一。 该框架完美结合了 Python 作为通用语言的简单性和以 C++ 构建的强大的 Qt 应用程序框架。
请记住,PyQt 带有两个许可选项:
- GPLv3:免费使用,但您分发给它的任何人都可以重新分发它(可能是免费的)
- 商业:让你的代码保密,这样你就可以从你的工作中获利,但你必须为使用它的每个开发人员支付许可证费用(目前每个开发人员 550 美元)
特征:
- 由河岸支持
- 用于处理用户交互的事件驱动编程
- 与其他库和框架集成
- 国际化和本地化支持
- 访问 Qt 库中的大量功能
- 支持多媒体、WebKit和WebEngine、数据库集成
- 与 Windows、Linux 和 macOS 的跨平台兼容性
Tkinter
Tkinter 是一个内置的 Python GUI 框架。 它是标准库的一部分,因此您无需安装任何额外的依赖项。
与 PyQt(使用 Qt)类似,Tkinter 使用称为 Tk 的图形用户界面工具包。 它还提供了一组用于创建各种小部件(例如按钮、标签、文本框和菜单)的工具。
一般来说,Tkinter 是快速创建小型 GUI 程序的好方法,但由于其外观和感觉已经过时,您最好为更大的项目选择更强大的框架。
特征:
- 支持 GUI 应用程序中使用的常见小部件
- 用于处理用户交互的事件驱动编程
- 内置图像和颜色支持
- 与 Windows、Linux 和 macOS 的跨平台兼容性
- 标准库的一部分
- 轻的
基维
Kivy 是一个开源框架,用于使用 Python 创建跨平台的移动和桌面应用程序。 它非常适合创建具有交互性和视觉吸引力的应用程序,例如游戏和多点触控应用程序,其主要卖点是适用于每个主要平台(Windows、Linux、macOS、iOS 和 Android)的单一代码库。
与 PyQt 不同,Kivy 是免费和开源的,不是外部 UI 库的包装器,并且根据 MIT 许可证获得许可,这意味着您可以发布 Kivy 应用程序并从中获利。
特征:
- 用于创建多点触控应用程序的开源工具包
- 支持各种平台,包括移动和桌面
- 对图形、动画和 UI 元素的内置支持
- 可以与其他库和框架集成
PySide
Pyside 是一个用于创建多平台应用程序的开源工具包。 它基于 Qt 库(类似于 PyQt)并提供对广泛功能的访问。
Pyside 还支持多种输入法和事件驱动编程,并包括对图形和多媒体的内置支持。
因为它是根据 LGPL 获得许可的,所以您可以更轻松地创建专有软件。 它由 Qt 公司提供支持,支持 Linux、macOS 和 Windows。
特征:
- LGPL许可
- 由 Qt 公司支持
- 支持在您的应用程序中显示图像、视频和其他类型的媒体
- 三个版本分别用于 Qt4、Qt5 和 Qt6
PySimpleGUI
PySimpleGUI 因其简单易用的 API 而在 Python 社区中越来越受欢迎。
这是在 Python 中创建简单易用的图形用户界面的绝佳选择,并允许您非常轻松地将 GUI 添加到已经运行的脚本中。 PySimpleGUI 包装了 4 个不同 GUI 库的强大功能,PySide、Tkinter、wxPython 和 Remi。
特征:
- 很棒的文档
- 易于学习和使用
- 全套即用型小部件
- 支持 Python 3.4+
Python 机器学习框架
以下是提供预构建功能和工具的 Python 软件库,可帮助开发人员构建和部署机器学习模型,支持数据预处理、模型训练和评估等常见任务,以及用于将模型部署到生产的工具。
scikit学习
scikit-learn 是最受欢迎的机器学习库,在科技行业和学术界都有使用。
它为常见的 ML 任务提供了高效的工具,并且构建在 Numpy 和 SciPy 等其他科学库之上。
特征:
- 免费和开源
- 数据挖掘和数据分析的高效工具
- 提供广泛的分类、回归、聚类和降维算法
- 活跃的社区和开发,具有文档齐全的 API 和教程
张量流
TensorFlow 是一个用于构建和部署机器学习模型的开源平台。 它由 Google Brain 团队于 2015 年开发,是一个强大的深度学习库,具有用于构建和训练神经网络的广泛工具。
TensorFlow 可用于各种任务,例如图像和语言处理、语音识别和预测分析。
特征:
- 构建神经网络的工具
- 支持使用 TensorFlow.js 和 TensorFlow Lite 进行移动和 Web 部署
- 用于可视化和调试的工具,例如 TensorBoard
- 在多个平台上运行的灵活性,包括 CPU、GPU 和 TPU
- 在 Python、C 和 C++ 中可用
火炬
与 TensorFlow 一起,PyTorch(由 Facebook 的人工智能研究小组开发)是构建深度学习模型最常用的工具之一。 它可用于各种任务,例如计算机视觉、自然语言处理和生成模型。
特征:
- 广泛的文档和庞大的开发人员社区
- 与云支持轻松集成
- 易于学习,具有用户友好的工具
- 比其他框架更 Pythonic 的感觉
- 免费和开源
凯拉斯
Keras 是一个高级深度学习框架,能够在 TensorFlow、Theano 和 CNTK 之上运行。 它由 Francois Chollet 于 2015 年开发,旨在为构建和训练深度学习模型提供简单且用户友好的界面。
Keras 提供构建块来快速构建机器学习模型。 这就是为什么它被广泛用于像 Kaggle 这样的数据科学竞赛中。
特征:
- 用于构建和训练深度学习模型的简单且用户友好的界面
- 支持使用各种架构和优化器构建和训练神经网络
- 包括强大的深度学习库和工具生态系统,例如 Keras Tuner 和 KerasRL
- 在多个后端(例如 TensorFlow、CNTK 或 Theano)上运行的灵活性
- 支持分布式计算
- 内置模型可视化和调试支持
Python 科学计算框架
这些框架可帮助学生、科学家和研究人员执行任务,而无需关注计算的低级细节。
科学计算框架通常包括线性代数、优化、插值、积分和科学计算中其他常见任务的功能。
NumPy
NumPy 是一个科学计算库,旨在处理数字数据的多维数组和矩阵。 它还提供了广泛的数学函数来对这些数组进行操作。
NumPy 是数据科学中使用的许多其他 Python 库和框架的基础块,包括 SciPy、Pandas、scikit-learn 和 Tensorflow。
特征:
- 轻松处理多维数组
- 支持线性代数例程、傅里叶变换、随机数生成等数学工具
- 广泛的数学函数库
- 与 vanilla Python 操作相比更快(一些实现是用 C 语言实现的)
- 支持多种硬件
科学比
SciPy 提供了一组构建在 NumPy 之上的算法和函数。 它有助于执行常见的科学和工程任务,例如优化、信号处理、积分、线性代数等。
特征:
- 免费和开源
- 为科学和工程任务定义算法和函数
- 充满活力的社区和出色的文档
- 每个程序员都可以访问,无论他们的经验水平如何
熊猫
Pandas 是一个强大而灵活的开源库,用于在 Python 中执行数据分析。 它提供了高性能的数据结构(即著名的DataFrame)和数据分析工具,可以轻松处理结构化数据。
特征:
- 高性能数据结构,例如 DataFrame 和 Series
- 支持从多种格式读取和写入数据,包括 CSV、Excel 和 SQL
- 促进对现实世界数据的分析
- 基于其他数据科学包,如 scikit-learn
Matplotlib
Matplotlib 是 Python 中广泛使用的数据可视化工具。 它提供了一个面向对象的 API,用于将绘图嵌入到应用程序中。
它被设计为高度可定制的,并提供了广泛的选项来创建绘图、图表和可视化。 由于这些原因,Matplotib 通常用于数据科学、机器学习和科学计算项目。
特征:
- 支持 2D 和 3D 绘图
- 可以提示交互式数字
- 通常嵌入在 Jupyter 笔记本和 GUI 应用程序中
- 广泛的文档和生动的社区
Python 测试框架
这些框架都是为了帮助您完成繁琐的代码测试过程。
如果您使用的是测试驱动开发 (TDD),则以下框架是您工作流程中必不可少的。
测试
Pytest 是一种广泛采用的测试框架,旨在易于使用和扩展。 它可以帮助您在小型和复杂的 Python 代码库中编写优雅的测试。
特征:
- 易于学习和使用
- 超过 800 个插件可用
- 设置工作流程以创建单元测试
- 详细错误信息
单元测试
Unittest 是一个基于 xUnit 测试约定的内置 Python 测试框架。 它提供了一种 Pythonic 和面向对象的方式来创建自动化测试用例和测试套件。
特征:
- 用于编写和运行测试的简单易用的界面
- 测试参数化、夹具和标记
- 可以与 pytest 或 nose 结合使用
- Python 标准库的一部分
鼻子2
nose2 是 nose 测试框架的继承者,主要区别在于 nose2 支持现代 Python 版本。
nose2 扩展了内置的 unittest 库,并提供了一种更强大、更灵活的方式来编写和运行测试。 它是一个可扩展的工具,因此您可以使用多个内置和第三方插件来发挥您的优势。
特征:
- 可通过插件扩展
- 基于内置的unittest
- 支持 Python 3
异步框架
这些类型的 Python 框架提供了一组工具和库,使开发人员能够以更易于管理和高效的方式编写异步代码。
异步
asyncio 是许多其他异步框架的核心。 它允许开发人员使用 async/await 语法编写并发代码,它旨在处理数千个并发连接。
asyncio 为多种传输协议(如 TCP、UDP、SSL/TLS 和子进程通信)提供单个 API。
特征:
- 内置于 Python 中
- 其他几个 Python 框架的基础
- 包括用于控制子进程和执行网络 IO 的 API
- 很棒的文档
- Python 标准库的一部分
Aiohttp
Aiohttp 是一个建立在 asyncio 包之上的异步 HTTP 客户端/服务器框架。 它提供了一个简单直观的界面来处理 HTTP 请求和响应,并支持中间件、会话和其他 Web 开发工具。
特征:
- 客户端和服务器端 HTTP 协议
- 处理大量并发连接
- 允许您构建异步网络应用程序
概括
Python 框架有助于促进代码组织、提高生产力,并使软件开发过程更轻松、更高效。
作为一名 Python 开发人员,你的工作不是成为我们上面介绍的所有 25 个 Python 框架的专家,而是仔细选择你最感兴趣的框架,用它们构建真正让你兴奋的项目,并掌握那些或完全两个框架。
有一个可以投入生产的项目? 确保获得最好的应用程序托管! Kinsta 的应用程序托管解决方案专为任何规模的项目而设计,只需几分钟即可通过 GitHub 部署它们。
更重要的是,您将获得 Google 的 C2 机器和高级网络附带的即时速度启动,更不用说 Kinsta 的 Cloudflare 集成提供的稳定性和安全性。
您使用过哪些 Python 框架,您最喜欢哪个? 在下面的评论部分分享您的想法。