Python (Русский)

From ArchWiki
Jump to: navigation, search
Состояние перевода: На этой странице представлен перевод статьи Python. Дата последней синхронизации: 2 июня 2017‎. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Из Википедии:

Python — высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.
Python поддерживает несколько парадигм программирования, в том числе структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное. Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Python организовывается в функции и классы, которые могут объединяться в модули (они, в свою очередь, могут быть объединены в пакеты).

Установка

Python 3

Python 3 - это актуальная на данный момент версия языка, несовместимая с Python 2. Синтаксис в ней, по большей части, такой же, но многие вещи, например, то, как работают встроенные объекты наподобие словарей и строк, значительно изменились, а многие устаревшие функции были окончательно удалены. Помимо этого стандартная библиотека была разбита на несколько отдельных частей. Чтобы подробнее узнать о различиях, прочитайте статью Python2orPython3, а также относящуюся к ней главу книги "Погружение в Python 3".

Для получения самой свежей версии Python 3 установите пакет python.

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

Python 2

Для получения последней версии Python 2 установите пакет python2.

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

Любая программа, которой необходим Python 2, должна ссылаться на /usr/bin/python2, a не на /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 будет использоваться, введите следующую команду:

$ which python

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

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

Важно: Все версии Python вплоть до 2.7 и 3.4 не получали никаких обновлений, в том числе обновлений безопасности, как минимум с 2014 г. Использование этих версий для работы приложений с непроверенным кодом или имеющих отношение к интернету может быть весьма опасным и не рекомендуется

Устаревшие версии Python доступны в AUR и могут быть полезны, если вас одолевает историческое любопытство, если старые приложения не запускаются, или если вам необходимо протестировать свои программы на возможность работы в дистрибутивах, в которых используются старые версии интерпретатора (например, в RHEL 5.x это Python 2.4, а в Ubuntu 12.04 это Python 3.2):

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

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

Огромное количество пакетов Python доступно в официальных репозиториях и в AUR, однако экосистема Python предоставляет свои собственные пакетные менеджеры, работающие с PyPI (Python Package Index):

  • pip — PyPA, инструмент установки пакетов Python
https://pip.pypa.io/ || python-pip, python2-pip
  • setuptools — с легкостью скачивайте, собирайте, устанавливайте, обновляйте и удаляйте пакеты Python
https://setuptools.readthedocs.io/ || python-setuptools, python2-setuptools

Для просмотра краткой истории и сравнения этих двух утилит, обратитесь к странице pip vs easy_install. Общепризнанные лучшие практики управления пакетами Python описаны здесь.

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

Примечание: Существуют инструменты, автоматически генерирующие PKGBUILDы для пакетов pip и таким образом интегрирующие его в pacman: pipman-gitAUR, pip2arch-gitAUR

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

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

  • TkInter — привязки к Tk
https://wiki.python.org/moin/TkInter || стандартный модуль
  • pyQt — привязки к Qt
https://riverbankcomputing.com/software/pyqt/intro || python2-pyqt4 python2-pyqt5 python-pyqt4 python-pyqt5
  • pySide — привязки к Qt
https://wiki.qt.io/PySide || python2-pyside python-pyside
  • pyGTK — привязки к GTK+ 2
http://www.pygtk.org/ || pygtk
  • PyGObject — привязки к GTK+ 2/3 при помощи GObject Introspection
https://wiki.gnome.org/PyGObject_ru || python2-gobject2 python2-gobject python-gobject2 python-gobject
  • wxPython — привязки к wxWidgets
https://wxpython.org/ || wxpython

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

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

IPython

IPython - это расширенная командная строка Python, доступная в официальных репозиториях в пакетах ipython и ipython2. Если вы хотите использовать IPython notebook, установите пакет jupyter-notebook для IPython3 или ipython2-notebook для IPython2. Затем выполните:

$ jupyter notebook

чтобы запустить браузер, а в нем - ядро IPython. Вы можете выбрать версию python при создании notebook в браузере.

bpython - интерфейс ncurses для интерпретатора Python, доступный в официальных репозиториях в пакетах bpython и bpython2.

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

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

Для получения дополнительной информации смотрите статью Python/Virtual environment.

Включение автодополнения в оболочке Python2

Начиная с версии Python 3.4, автодополнение по клавише Tab включено по умолчанию. Для Python 2 вы можете включить его самостоятельно, добавив следующие строки в файл, к которому обращается переменная окружения PYTHONSTARTUP: [1]

import rlcompleter
import readline
readline.parse_and_bind("tab: complete")

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

Проблемы с версией Python в скриптах сборки

Сборочные скрипты многих проектов предполагают, что python обращается к Python 2, и в конце концов это может привести к ошибке, обычно гласящей, что print 'foo' - неправильный синтаксис. К счастью, многие из них вызывают python через переменную окружения PATH, а не содержат в себе жестко прописанный #!/usr/bin/python. Благодаря этому, вместо редактирования установочных скриптов, вы можете создать файл /usr/local/bin/python с содержимым наподобие этого:

/usr/local/bin/python
#!/bin/bash
script=$(readlink -f -- "$1")
case "$script" in (/путь/к/проекту1/*|/путь/к/проекту2/*|/путь/к/проекту3*)
    exec python2 "$@"
    ;;
esac

exec python3 "$@"

Где /путь/к/проекту1/*|/путь/к/проекту2/*|/путь/к/проекту3* - список шаблонов, разделенных символом | и соответствующих всем веткам проекта.

Не забудьте сделать файл исполняемым. После этого соответствующие скрипты будут запускаться через Python 2.

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