Python (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Python. Дата последней синхронизации: 28 мая 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Из What is Python?:

Python — интерпретируемый, интерактивный, объектно-ориентированный язык программирования. Включает модули, исключения, динамическую типизацию, высокоуровневые типы данных и классы. Поддерживает различные парадигмы программирования помимо ООП, вроде процедурного и функционального программирования. Python соединил в себе впечатляющую мощь и простоту синтаксиса. В нём предусмотрены интерфейсы для многих системных вызовов и библиотек, а также оконных систем; возможно расширение с помощью С и С++. Помимо всего перечисленного, он может использоваться как язык расширений для приложений, которым необходим программный интерфейс. Наконец, Python портируем: он запускается на множестве вариантов Unix, включая Linux и macOS, а также Windows.

Установка

Установите пакет python.

Другие версии

Старые и будущие версии Python доступны в AUR и могут быть полезны, если вас одолевает историческое любопытство, если старые приложения не запускаются на более новых версиях или если вам необходимо протестировать программы на возможность работы в дистрибутивах со старыми версиями интерпретатора:

Важно: Официальная поддержка Python 3.6 и более старых версий прекращена. Смотрите Status of Python versions.

Каждый из этих пакетов устанавливает отдельный исполняемый файл, содержащий в своём имени номер версии, например python3.7 для Python 3.7, что позволяет устанавливать несколько версий одновременно. Также можно использовать pyenv для лёгкой установки разных версий Python и переключения между ними.

Дополнительные модули/библиотеки для старых версий Python можно найти в AUR по слову python<версия_без_точки>. Например, введите python37 для поиска модулей версии 3.7.

Также можно скачать исходный код любой версии на странице https://www.python.org/downloads/.

Альтернативные реализации

Пакет python предоставляет CPython, стандартную реализацию Python, но существуют и другие реализации. Они обычно основаны на более старых версиях Python и лишь частично совместимы с CPython.

Доступные в Arch Linux реализации:

  • PyPy — Реализация Python, написанная на Python. Улучшенная производительность и использование памяти по сравнению с CPython.
https://www.pypy.org || pypy, pypy3
  • Jython — Реализация языка Python на Java. Используется для встраивания сценариев Python в программы на Java или использования библиотек Java в программах на Python.
https://www.jython.org/ || jython
  • micropython — Python для микроконтроллеров. Включает небольшое подмножество стандартной библиотеки Python; оптимизирован под запуск на микроконтроллерах в ограниченном окружении.
https://micropython.org/ || micropythonAUR
  • IronPython — Реализация языка программирования Python, которая плотно интегрирована с .NET. Может использовать библиотеки .NET и позволяет .NET-программам использовать библиотеки Python.
https://ironpython.net || ironpython-gitAUR

Существуют и другие реализации. Некоторые из них, вроде Stackless, Pyston и Cinder, используются внутри больших технологических компаний. Другие имели некоторое значение в прошлом, но больше не поддерживаются из-за улучшений более популярных реализаций.

Альтернативные оболочки

Пакет python включает интерактивную оболочку/REPL Python, которая запускается командой python. Доступны также следующие оболочки:

  • bpython — Приятный интерфейс для интерпретатора Python.
https://bpython-interpreter.org/ || bpython
  • IPython — Мощная интерактивная оболочка Python.
https://ipython.org/ || ipython
  • Jupyter — Сетевое приложение на основе IPython.
https://jupyter.org/ || jupyterlab, jupyter-notebook
  • ptpython — Продвинутый Python REPL, собранный с prompt-toolkit.
https://github.com/prompt-toolkit/ptpython || ptpythonAUR

Управление пакетами

Существует целый ряд способов установить пакет Python в Arch Linux:

https://pip.pypa.io/ || python-pip
  • pipx — Связан с pip, но создаёт у запускающего его пользователя изолированную среду для каждого приложения и связанных с ним пакетов, предотвращая конфликты с системными пакетами. Ориентирован на пакеты, которые могут быть запущены из командной строки непосредственно как приложения. Вы можете использовать pipx для установки пакетов из Python Package Index и других источников.
https://pypa.github.io/pipx/[устаревшая ссылка 2024-01-13 ⓘ] || python-pipx
  • Anaconda — Открытая система управления пакетами и окружением, изначально созданная для программ Python. С помощью Conda можно устанавливать пакеты из репозиториев Anaconda.
https://docs.conda.io/projects/conda/ || anacondaAUR
  • Miniconda — Легковесная альтернатива для Anaconda, которая устанавливает пакетный менеджер, но не устанавливает пакеты для научных вычислений по умолчанию.
https://docs.conda.io/en/latest/miniconda.html || miniconda3AUR

При установке пакетов с помощью pip рекомендуется использовать виртуальное окружение (или управление окружением Conda), чтобы предотвратить конфликты с системными пакетами в каталоге /usr. В качестве альтернативы можно устанавливать пакеты командой pip install --user, которая устанавливает пакеты для пользователя, а не в системный каталог /usr.

Смотрите Python Packaging User Guide на предмет лучших практик по управлению пакетами.

Исторически использовалась команда easy_install (часть python-setuptools) для установки пакетов, распространяемых как Eggs. easy_install и Eggs были заменены на pip и Wheels. Подробнее см. pip vs easy_install и Wheel vs Egg.

Примечание: Существуют также инструменты для интеграции pip и pacman путём автоматической генерации файлов PKGBUILD для выбранных пакетов PyPI: смотрите Creating packages#PKGBUILD generators.
Совет: pipenv предоставляет отдельный интерфейс командной строки для Pipfile, pip и virtualenv. Он доступен в пакете python-pipenv.

Привязки к графическим библиотекам

Доступны следующие привязки к библиотекам графических элементов:

  • Tkinter — Стандартный интерфейс Python к набору графических инструментов Tk.
https://docs.python.org/3/library/tkinter.html || python
  • Qt for Python (PySide2) — Официальные привязки Python к Qt5.
https://www.qt.io/qt-for-python || pyside2, pyside2-tools
  • Qt for Python (PySide6) — Официальные привязки Python к Qt6.
https://www.qt.io/qt-for-python || pyside6, pyside6-tools
  • pyQt — Набор привязок Python к Qt.
https://riverbankcomputing.com/software/pyqt/intro || python-pyqt5
  • PyGObject — Привязки Python для библиотек на основе GObject вроде GTK, GStreamer, WebKitGTK, GLib и GIO.
https://pygobject.readthedocs.io/ || python-gobject
  • wxPython — Кроссплатформенный набор GUI-инструметов для Python, который выступает в роли обёртки для wxWidgets.
https://wxpython.org/ || python-wxpython

Для использования этих привязок в Python, скорее всего, потребуется доустановить соответствующие наборы библиотек (например, для использования Tkinter нужно установить tk).

Советы и рекомендации

Виртуальное окружение

Python предоставляет инструменты для создания изолированных виртуальных окружений, в которых можно устанавливать пакеты, не влияя ни на другие виртуальные окружения, ни на системные пакеты Python. Виртуальное окружение позволяет запускать приложения в различных версиях Python на одной и той же системе.

Подробности смотрите в статье Python (Русский)/Virtual environment (Русский).

Автодополнение в оболочке Python

Автодополнение по клавише Tab включено в интерактивной оболочке по умолчанию. Учтите, что дополнение readline работает только для строк в глобальном пространстве имён. Пакет python-jedi расширяет возможности автодополнения [1].

Решение проблем

Module not found после перехода на новую версию Python

После обновления пакета python до новой минорной версии (например, с 3.10 на 3.11) некоторые Python-приложения могут начать выдавать ошибку No module named имя_модуля.

Это происходит, когда зависимость недоступна или не установлена для текущей версии Python. Пакеты Python устанавливаются в каталог site-packages конкретной версии (общесистемный /usr/lib/pythonX.Y/site-packages/ или пользовательский ~/.local/lib/pythonX.Y/site-packages/, где X.Y — версия, например 3.11). Поэтому каждый раз при переходе на новую минорную версию Python-пакеты, собранные для предыдущей версии Python, должны быть пересобраны для новой версии.

Пакеты из официальных репозиториев обновляются одновременно с Python, однако пакеты из сторонних источников, например из AUR, пользователь должен обновить самостоятельно. Смотрите Пользовательский репозиторий Arch#Обновление пакетов и Часто задаваемые вопросы#Что если я запущу полное обновление и обновится только библиотека, но не приложение, которое от нее зависит?

Смотрите также

Официальные ресурсы

Сторонние ресурсы