Сторонние библиотеки Python

Для Python было разработано огромное количество библиотек[1]:

Искусственный интеллект

Для Python было разработано много библиотек ИИ, такие как TensorFlow, Scikit-learn, Keras.

Платформенно зависимые библиотеки

Помимо стандартной библиотеки существует множество библиотек, предоставляющих интерфейс ко всем системным вызовам на разных платформах; в частности, на платформе Win32 поддерживаются все вызовы Win32 API, а также COM в объёме не меньшем, чем у Visual Basic или Delphi. Количество прикладных библиотек для Python в самых разных областях без преувеличения огромно (веб, базы данных, обработка изображений, обработка текста, численные методы, приложения операционной системы и т. д.)[2].

Библиотеки для работы с базами данных

Для Python принята спецификация программного интерфейса к базам данных DB-API 2[3] и разработаны соответствующие этой спецификации пакеты для доступа к различным СУБД: Oracle, MySQL, PostgreSQL, Sybase, Firebird (Interbase), Informix, Microsoft SQL Server и SQLite — sqlite3[4].

Математические библиотеки

Библиотека NumPy для работы с многомерными массивами позволяет иногда достичь производительности научных расчётов, сравнимой со специализированными пакетами. SciPy использует NumPy и предоставляет доступ к обширному спектру математических алгоритмов (матричная алгебра — BLAS уровней 1—3, LAPACK, БПФ…). Numarray[5] специально разработан для операций с большими объёмами научных данных. Pandas также используется для анализа и работы с данными.

Веб-библиотеки

WSGI[6] — интерфейс шлюза с веб-сервером (Python Web Server Gateway Interface).

Для Python написано много ORM (SQLAlchemy, Dejavu, Django), выполнены программные каркасы для разработки веб-приложений (Django, Pyramid, Flask, FastAPI).

Привязки к функциям Python других языков

Python предоставляет простой и удобный программный интерфейс C API для написания собственных модулей на языках Си и C++ и других. Такой инструмент как SWIG позволяет почти автоматически получать привязки для использования C/C++ библиотек в коде на Python. Возможности этого и других инструментов варьируются от автоматической генерации (C/C++/Fortran)-Python интерфейсов по специальным файлам (SWIG, pyste[7], SIP[8], pyfort[9]), до предоставления более удобных API (boost::python[10][11], CXX[12], Pyhrol[13] и др.). Инструмент стандартной библиотеки ctypes позволяет программам Python напрямую обращаться к динамическим библиотекам/DLL, если в них объявлены соответствующие экспортированные функции. Существуют модули, позволяющие встраивать код на С/C++ прямо в исходные файлы Python, создавая расширения «на лету» (pyinline[14], weave[15]).

Другой подход состоит во встраивании интерпретатора Python в приложения. Python легко встраивается в программы на Java, C/C++, OCaml. Взаимодействие Python-приложений с другими системами возможно также с помощью CORBA, XML-RPC, SOAP, COM.

Трансляция кода Python в другие языки

С помощью проекта Cython возможна трансляция программ, написанных на смешанных языках Python и C. Nuitka[16], в код на языке Си с последующей компиляцией в машинный код. Cython и Nuitka используется для ускорения скорости написанных Python-библиотек.

Библиотеки пользовательского графического интерфейса

С Python поставляется библиотека tkinter на основе Tcl/Tk для создания кроссплатформенных программ с графическим интерфейсом[17].

Существуют расширения, позволяющие использовать все основные библиотеки графических интерфейсов — wxPython[18], основанное на библиотеке wxWidgets, PyGObject для GTK[19], PyQt и PySide для Qt и другие. Некоторые из них также предоставляют широкие возможности по работе с базами данных, графикой и сетями, используя все возможности библиотеки, на которой основаны.

Библиотеки для создания игр

Для создания игр и приложений, требующих нестандартного интерфейса, можно использовать библиотеку Pygame. Она также предоставляет обширные средства работы с мультимедиа: с её помощью можно управлять звуком и изображениями, воспроизводить видео. Предоставляемое pygame аппаратное ускорение графики OpenGL имеет более высокоуровневый интерфейс по сравнению с PyOpenGL[20], копирующей семантику С-библиотеки для OpenGL. Есть также PyOgre[21], обеспечивающая привязку к Ogre — высокоуровневой объектно-ориентированной библиотеке 3D-графики. Кроме того, существует библиотека pythonOCC[22], обеспечивающая привязку к среде 3D-моделирования и симуляции OpenCascade[23].

Графические библиотеки

Для работы с растровой графикой используется библиотека Pillow[24].

Для работы с векторной графикой используется PyCairo[25].

Контроль типов и перегрузка функций

Существуют модули, позволяющие контролировать типы параметров функций на этапе исполнения, например, typecheck[26] или method signature checking decorators[27]. Необязательная декларация типов для параметров функции добавлена в Python 3, интерпретатор при этом не проверяет типы, а только добавляет соответствующую информацию к метаданным функции для последующего использования этой информации модулями расширений[28].

Перегрузка функций реализована различными сторонними библиотеками, в том числе PEAK[29][30]. Планы, которые не были приняты, по поддержке перегрузки в Python 3[31] были частично реализованы в библиотеке overloading-lib[32].

Примечания

  1. PyPI · Индекс пакета Python. PyPI. Дата обращения: 9 октября 2023. Архивировано 3 июня 2017 года.
  2. pywin32: Python for Window Extensions. Архивировано 7 июня 2021 года.
  3. PEP 249 – Python Database API Specification v2.0 | peps.python.org. peps.python.org. Дата обращения: 9 октября 2023. Архивировано 12 октября 2023 года.
  4. sqlite3 — DB-API 2.0 interface for SQLite databases. Python documentation. Дата обращения: 9 октября 2023. Архивировано 6 октября 2023 года.
  5. numarray Home Page. Дата обращения: 5 февраля 2007. Архивировано 9 июня 2021 года.
  6. PEP 3333 – Python Web Server Gateway Interface v1.0.1 | peps.python.org. peps.python.org. Дата обращения: 9 октября 2023. Архивировано 5 октября 2023 года.
  7. Pyste Documentation. Дата обращения: 3 февраля 2007. Архивировано из оригинала 3 февраля 2007 года.
  8. Архивированная копия. Дата обращения: 3 февраля 2007. Архивировано из оригинала 8 февраля 2007 года.
  9. Архивированная копия. Дата обращения: 3 февраля 2007. Архивировано 8 февраля 2007 года.
  10. Boost.Python. Дата обращения: 3 февраля 2007. Архивировано 3 февраля 2007 года.
  11. http://www.drdobbs.com/building-hybrid-systems-with-boostpython/184401666 Архивная копия от 13 октября 2015 на Wayback Machine Building Hybrid Systems with Boost.Python
  12. PyCXX: Write Python Extensions in C. Дата обращения: 3 февраля 2007. Архивировано 3 февраля 2007 года.
  13. Мост между C++ и Python. Дата обращения: 15 мая 2014. Архивировано 18 декабря 2014 года.
  14. PyInline: Mix Other Languages directly Inline with your Python. Дата обращения: 3 февраля 2007. Архивировано 15 января 2007 года.
  15. Weave. Дата обращения: 3 февраля 2007. Архивировано из оригинала 1 марта 2007 года.
  16. Nuitka the Python Compiler — Nuitka the Python Compiler documentation. nuitka.net. Дата обращения: 9 октября 2023. Архивировано 3 сентября 2022 года.
  17. tkinter — Python interface to Tcl/Tk. Python documentation. Дата обращения: 9 октября 2023. Архивировано 18 октября 2012 года.
  18. wxPython. Дата обращения: 30 сентября 2008. Архивировано 9 июня 2021 года.
  19. The GTK Team. The GTK Project - A free and open-source cross-platform widget toolkit (англ.). The GTK Team (5 июня 2015). Дата обращения: 25 января 2021. Архивировано 27 ноября 2020 года.
  20. PyOpenGL — The Python OpenGL Binding. Дата обращения: 9 февраля 2007. Архивировано 15 июня 2011 года.
  21. PyOgre : Ogre Wiki. Дата обращения: 9 февраля 2007. Архивировано из оригинала 6 февраля 2007 года.
  22. pythonOCC, 3D CAD/CAE/PLM development framework for the Python programming language. Дата обращения: 28 марта 2009. Архивировано 8 августа 2011 года.
  23. Open CASCADE Technology, 3D modeling & numerical simulation. Дата обращения: 28 марта 2009. Архивировано 18 марта 2009 года.
  24. Pillow: Python Imaging Library (Fork). Архивировано 10 октября 2023 года.
  25. pycairo: Python interface for cairo.
  26. Typechecking module for Python. Дата обращения: 10 февраля 2007. Архивировано из оригинала 4 февраля 2007 года.
  27. Method signature checking decorators " Python recipes " ActiveState Code. Дата обращения: 16 февраля 2008. Архивировано 13 февраля 2008 года.
  28. PEP-3107. Дата обращения: 16 февраля 2007. Архивировано 8 мая 2007 года.
  29. FrontPage — The PEAK Developers' Center. Дата обращения: 19 марта 2008. Архивировано 12 мая 2008 года.
  30. PEAK-Rules. Дата обращения: 19 марта 2008. Архивировано 23 июля 2008 года.
  31. PEP-3124. Дата обращения: 25 мая 2007. Архивировано 3 июля 2007 года.
  32. overloading-lib. Архивировано 17 сентября 2013 года., Библиотека динамической перегрузки функций и методов основанной на типах аргументов для языка python