Python (Русский)
Из What is Python?:
- интерпретируемый, интерактивный, объектно-ориентированный язык программирования;
- включает модули, исключения, динамическую типизацию, высокоуровневые типы данных и классы;
- поддерживает различные парадигмы программирования помимо ООП, вроде процедурного и функционального программирования;
- соединил в себе впечатляющую мощь и простоту синтаксиса;
- в нём предусмотрены интерфейсы для многих системных вызовов и библиотек, а также оконных систем; возможно расширение с помощью С и С++;
- помимо всего перечисленного, он может использоваться как язык расширений для приложений, которым необходим программный интерфейс;
- наконец, он портируем: он запускается на множестве вариантов Unix, включая Linux и macOS, а также Windows.
Установка
Установите пакет python.
Другие версии
Предыдущие и предварительные (будущие) версии доступны в AUR. Они полезны для старых приложений и проектов, которым требуются определённые версии Python:
- Python 3.15: python315AUR (предварительная версия)
- Python 3.14: python314-freethreadedAUR (free-threaded — с отключенным Global Interpreter Lock, или GIL)
- Python 3.13: python313AUR
- Python 3.13: python313-freethreadedAUR (free-threaded)
- Python 3.12: python312AUR
- Python 3.11: python311AUR
- Python 3.10: python310AUR
- Python 3.9: python39AUR (не поддерживается)
- Python 3.8: python38AUR (не поддерживается)
- Python 3.7: python37AUR (не поддерживается)
- Python 3.6: python36AUR (не поддерживается)
- Python 2.7: python2AUR (не поддерживается)
Каждый из этих пакетов устанавливает отдельный исполняемый файл, содержащий в своём имени номер версии, например python3.9 для Python 3.9, что позволяет устанавливать несколько версий одновременно. Также можно использовать pyenv для лёгкой установки разных версий Python и переключения между ними.
Дополнительные модули и библиотеки для старых версий Python можно найти в AUR по слову python<версия_без_точки>. Например, введите python310 для поиска модулей версии 3.10.
Также можно скачать исходный код любой версии на странице https://www.python.org/downloads/.
Альтернативные реализации
Пакет python предоставляет CPython, стандартную реализацию Python, но существуют и другие реализации. Они обычно основаны на более старых версиях Python и лишь частично совместимы с CPython.
Доступные в Arch Linux реализации:
- PyPy — Реализация Python, написанная на Python. Улучшенная производительность и использование памяти по сравнению с CPython.
- Jython — Реализация языка Python на Java. Используется для встраивания Python-скриптов в программы на Java или использования библиотек Java в программах на Python.
- micropython — Python для микроконтроллеров. Включает небольшое подмножество стандартной библиотеки Python; оптимизирован под запуск на микроконтроллерах в ограниченном окружении.
- IronPython — Реализация языка программирования Python, которая плотно интегрирована с .NET. Может использовать библиотеки .NET и позволяет .NET-программам использовать библиотеки Python.
- https://ironpython.net || ironpython2AUR, ironpython3AUR
Существуют и другие реализации. Некоторые из них, такие как Cinder, используются внутри больших технологических компаний. Другие имели некоторое значение в прошлом, но больше не поддерживаются из-за улучшений более популярных реализаций.
Альтернативные оболочки
Пакет python включает интерактивную оболочку/REPL Python, которая запускается командой python. Доступны также следующие оболочки:
- bpython — Приятный интерфейс для интерпретатора Python.
- IPython — Мощная интерактивная оболочка Python.
- Jupyter — Сетевое приложение на основе IPython.
- ptpython — Продвинутый Python REPL, собранный с prompt-toolkit.
Управление пакетами
Существует целый ряд способов установить пакет Python в Arch Linux:
Репозитории Arch
Большое количество популярных пакетов доступны в официальных репозиториях и AUR. Это рекомендуемый способ для установки общесистмных пакетов, и единственный метод, официально поддерживаемый Arch Linux.
Сторонние пакеты
Разработчикам могут быть нужны пакеты, или определённые версии пакетов, не доступные в репозиториях Arch. Рекомендуется использовать раздельные виртуальные окружения для изоляции каждого проекта, во избежание конфликтов с системными пакетами в /usr. Для установки пакетов в виртуальной среде доступны различные инструменты:
- pip(1) — Официальный установщик пакетов Python.
- pipx — Специализированный установщик, используемый для пакетов, которые могут быть запущены из командной строки непосредственно как приложения (но не для библиотек).
- Poetry — Простой инструмент для управления зависимости и создания Python-пакетов. Poetry - один инструмент для разработки, сборки, публикации и отслеживания зависимостей для Python проектов.
- Conda — Conda обеспечивает управление пакетами, зависимостями и окружениями для любого языка. Conda была изначально создана для Python, и популярна в научных вычислениях, науке о данных и машинном обучении. Conda - менеджер пакетов сообщества miniforge, Anaconda и Miniconda.
- uv — Чрезвычайно быстрый менеджер пакетов Python, написанный на Rust. Один инструмент, заменяющий pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv, и многих других.
В качестве альтернативы виртуальным окружения, можно использовать команду pip install --user, которая устанавливает пакеты для пользователя, а не в системный каталог /usr. Это разделяет пакеты между пользователями, но не между проектами. Виртуальные среды обычно предпочтительнее.
Смотрите Python Packaging User Guide на предмет лучших практик по управлению пакетами.
Исторические примечания
Исторически использовалась команда easy_install (часть python-setuptools) для установки пакетов, распространяемых как Eggs. easy_install и Eggs были заменены на pip и Wheels. Подробнее смотрите pip vs easy_install и Package Formats.
Старые версии pip могут устанавливать сторонние пакеты общесистемно, но это вызывает проблемы, упомянутые в PEP668. Общесистемное окружение теперь помечено как externally managed environment, и pip больше не допускает общесистемную установку.
Привязки к графическим библиотекам
Доступны следующие привязки к библиотекам графических элементов:
- Tkinter — Стандартный интерфейс Python к набору графических инструментов Tk.
- Qt for Python (PySide2) — Официальные привязки Python к Qt5.
- Qt for Python (PySide6) — Официальные привязки Python к Qt6.
- pyQt — Набор привязок Python к Qt.
- PyGObject — Привязки Python для библиотек на основе GObject вроде GTK, GStreamer, WebKitGTK, GLib и GIO.
- wxPython — Кроссплатформенный набор GUI-инструментов для Python, который выступает в роли обёртки для wxWidgets.
Для использования этих привязок в Python, скорее всего, потребуется доустановить соответствующие наборы библиотек (например, для использования Tkinter нужно установить tk).
Советы и рекомендации
Виртуальное окружение
Python предоставляет инструменты для создания изолированных виртуальных окружений (virtual environments), в которых можно устанавливать пакеты, не влияя ни на другие виртуальные окружения, ни на системные пакеты Python. Виртуальное окружение позволяет запускать приложения в различных версиях Python на одной и той же системе.
Подробности смотрите в статье Python (Русский)/Virtual environment (Русский).
Автодополнение в оболочке Python
Автодополнение по клавише Tab включено в интерактивной оболочке по умолчанию. Учтите, что дополнение readline работает только для строк в глобальном пространстве имён. Пакет python-jedi расширяет возможности автодополнения [1].
Список всех пакетов, собранных для определённой версии Python
Иногда бывает полезно знать, какие из установленных пакетов были собраны для определённой версии Python. Например,
$ pacman -Qoq /usr/lib/python3.12
выведет все, собранные для Python 3.12. Это особенно полезно когда официальная версия Python обновлена и нужно получить список пакетов из AUR, которые требуют пересборки, так как они были собраны для, возможно, уже не установленной версии Pytho, смотрите #Module not found после перехода на новую версию Python.
Решение проблем
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#Обновление пакетов и Часто задаваемые вопросы#Что если я запущу полное обновление и обновится только библиотека, но не приложение, которое от нее зависит?
Смотрите также
Официальные ресурсы
- Официальная документация (для автономного доступа можно установить её с помощью пакета python-docs)
- Официальное руководство
Сторонние ресурсы
- Automate the Boring Stuff with Python — книга Creative Commons
- Awesome Python — обновляемый список ресурсов о Python
- A Byte of Python — книга Creative Commons
- Cracking Codes With Python — бесплатная онлайн-книга
- Crash into Python — бесплатное руководство
-
Python Debugging With Pdb — руководство по использованию
pdb, отладчика Python - Dive Into Python — книга Creative Commons
- Fluent Python — коммерческая книга
- Introducing Python — коммерческая книга
- Invent Your Own Computer Games with Python — бесплатная онлайн-книга
- Learn Python — бесплатное интерактивное руководство
- Learn Python the Hard Way — коммерческая книга
- Pythonspot Python Tutorials — бесплатные онлайн-руководства
- Think Python — книга Creative Commons