Python (Русский) - ArchWiki

Jump to content

# Python (Русский)

From ArchWiki

Ссылки по теме

- Python package guidelines
- Виртуальное окружение
- mod_wsgi
- Django

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

Из What is Python?:

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

## Установка

### Python 3

Python 3 — последняя и активно разрабатываемая версия языка. Последние изменения в Python 3 можно увидеть на странице What's New in Python.

Текущий релиз Python 3 можно установить с пакетом python.

Если вы хотите собрать самую свежую RC/бета-версию из исходников, посетите страницу Python Downloads. В пользовательском репозитории Arch также есть несколько отличных PKGBUILD'ов. Если вы решили собрать RC-версию, обратите внимание, что исполняемый файл устанавливается (по умолчанию) в каталог `/usr/local/bin/python3.x`. В качестве альтернативы, для которой не требуются права суперпользователя, можно выбрать установку в домашний каталог с помощью pyenv.

### Python 2

Важно: Жизненный цикл Python 2 закончился 1 января 2020 года. Некоторое количество пакетов всё ещё зависит от Python 2, но эта версия Python больше поддерживаться не будет. Смотрите Sunsetting Python 2.

Python 2 — более старая версия языка. Python 3 и Python 2 несовместимы. Обзор различий можно найти в статье Python2orPython3.

Хотя Python 2 более не поддерживается, некоторые пакеты всё ещё от него зависят. Python 2 может также пригодиться разработчикам, которые поддерживают, используют или портируют старые программы на Python 2.

Последнюю версию Python 2 можно установить с пакетом python2.

Python 2 будет успешно запускаться и функционировать, даже если в вашей системе также установлен Python 3. Эта версия запускается командой `python2`.

Любая программа, которой необходим Python 2, должна вызывать команду `/usr/bin/python2` вместо `/usr/bin/python`, которая указывает на Python 3. Чтобы добиться этого, откройте программу или сценарий в текстовом редакторе и измените первую строку, которая может выглядеть как

    #!/usr/bin/env python

или

    #!/usr/bin/python

В обоих случаях замените `python` на `python2`, и программа будет использовать Python 2.

Другой способ, избавляющий от необходимости редактировать сценарии — явно указывать команду `python2`:

    $ python2 мой_сценарий.py

Но бывают ситуации, когда у вас нет возможности контролировать поведение сценариев. В этом случае можно попробовать обмануть окружение. Этот трюк работает только если в сценарии указана строка `#!/usr/bin/env python`: в случае с `#!/usr/bin/python` ничего не получится. Все это возможно благодаря принципу работы утилиты `env`, которая ищет первое подходящее совпадение в каталогах, указанных в переменной `PATH`.

Итак, для начала создайте необходимый каталог:

    $ mkdir ~/bin

Затем создайте символическую ссылку `python`, указывающую на python2, и ещё одну для сценариев настройки:

    $ ln -s /usr/bin/python2 ~/bin/python
    $ ln -s /usr/bin/python2-config ~/bin/python-config

Наконец, добавьте вновь созданный каталог в начало переменной `PATH`:

    $ export PATH=~/bin:$PATH

Примечание: Такое изменение переменных окружения не является долговременным и действует только в текущем сеансе терминала.

Чтобы узнать, какая версия интерпретатора Python будет использоваться, выполните:

    $ command -v python

Еще один способ обмана окружения, который также основан на вызове `#!/usr/bin/env python` — использовать #Виртуальное окружение.

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

Пакет 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/jonathanslenders/ptpython || ptpythonAUR

### Старые версии

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

- Python 3.9: python39AUR
- Python 3.8: python38AUR
- Python 3.7: python37AUR
- Python 3.6: python36AUR

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

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

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

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

- Официальные репозитории и AUR — большое количество популярных пакетов доступно в репозиториях Arch. Это предпочтительный вариант установки системных пакетов.
- pip(1) — Официальный установщик пакетов для Python. Используйте pip для установки пакетов из Python Package Index и других индексов.

  https://pip.pypa.io/ || python-pip

- pipx — Связан с pip, но создаёт у запускающего его пользователя изолированную среду для каждого приложения и связанных с ним пакетов, предотвращая конфликты с системными пакетами. Ориентирован на пакеты, которые могут быть запущены из командной строки непосредственно как приложения. Вы можете использовать pipx для установки пакетов из Python Package Index и других источников.

  https://pypa.github.io/pipx/ || 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-toolsAUR

- 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].

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

### Официальные

- Официальная документация
- Официальное руководство

### Сторонние

- Automate the Boring Stuff with Python — книга Creative Commons
- Awesome Python — обновляемый список ресурсов о Python
- A Byte of Python — книга Creative Commons
- Cracking Codes With Python — бесплатная онлайн-книга
- Crash into Python — беплатное руководство
- Debugging in Python — руководство по использованию `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

Category:

- Programming languages (Русский)