[ Пред. ] [ Содержание ] [ След. ]

Python

[ @python @console ]



В современных дистрибутивах Python установлен по-умолчанию. Он приходит из общего репозитория и со временем обновляется.


Одновременно может быть установлено несколько версий.


Проверить версию Python


Единая версия для всей системы вызывается через симлинк “/usr/bin/python3


Раньше вызывалось через “python”, но после перехода на третью версию все привыкли явно указывать версию.


python3 --version


Или


ls /usr/bin/python*


Пример ответа:


/usr/bin/python3
/usr/bin/python3.11


Другой пример ответа:


/usr/bin/python
/usr/bin/python2
/usr/bin/python2.7
/usr/bin/python2.7-config
/usr/bin/python2-config
/usr/bin/python3
/usr/bin/python3.11
/usr/bin/python3.11-config
/usr/bin/python3-config
/usr/bin/python-config


Там же находится симлинк на установленную по-умолчанию версию Python (в моём случае 3.11).


python3.11 --version


Пример ответа в обоих случаях: «Python 3.11.2».


3.11 — это общая версия языка.
3.11.2 — конкретная версия интерпретатора.


Где что находится


Файл-симлинк /usr/bin/python3]> ссылается на файл [[/usr/bin/python3.11, который ссылается на каталог /usr/share/python3/. Всегда можно поставить что-то куда-то отдельно, но плясать макарену с ручной установкой нет смысла, всё делается автоматически.


Установить idle3


Это Integrated Development Environment — основная среда для выполнения скриптов на Python. Сегодня это опциональный атавизм, скрипты можно запускать в консоли. Но если хочется:


sudo apt-get install idle3


Выполнить скрипт (программу) на Python


Создать каталог проекта


Условно назовём проект «combinat»:


mkdir combinat


Создать файл “main.py”


Сделать новый файл в каталоге с названием проекта — назвать файл “main.py”.


Если файл только один, то его название не имеет значения. Но в проекте всегда появляется несколько файлов, поэтому лучше привыкнуть начинать проекты с файла “main.py”.


mcedit combinat/main.py


В этот файл вставить текст:


if name == "main":

print("Hello world")


Поднять venv для проекта


Условно назовём проект «combinat»:


python3 -m venv combinat


Появится подкаталог “combinat” с набором служебных каталогов и файлов внутри.


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


source combinat/bin/activate


В консоли будет видно, что мы перешли в виртуальное окружение с названием «combinat» — его название выводится перед указанием имени пользователя и hostname.


Выполнить скрипт в проекте


…который уже находится в файле “main.py


python3 main.py


Если cработает — погнали программировать.


if name == "main":

your-first-function-name()
your-second-function-name()


Как погасить venv


Зайти в каталог проекта и выполнить


deactivate combinat


Установить пакеты для Python


Это всегда надо выполнять внутри предварительно поднятого venv. Устанавливать пакеты для python через pip напрямую в системе запрещено — это может повлиять на стабильность всей системы.


Вообще всю работу с python предлагается выполнять в изолированном виртуальном окружении.


python3 pip install Some_Package


Установить пакеты для определенной версии Python


Вызвать pip через версию Python, для которой надо что-то установить.


python3.8.9 -m pip install Some_Package


Установить отдельную версию Python


Всегда есть возможность поставить рядом несколько версий Python — иногда это необходимо и обосновано. Далее можно ИЛИ вызывать нужную версию в каждом отдельном случае, ИЛИ даже можно (но не нужно!) переназначать интерпретатор языка глобально, для всей системы.


Можно поставить несколько версий Python и постарее, и посвежее той, что приходит из официального репозитория (на данный момент 3.9.2). Они все потенциально могут вызвать конфликт зависимостей, но это решаемо.


Засетапить окружение для сборки Python из исходного кода


Это кагбэ дальновиднее и независимее всего.


Тут также будут установлен PIP (Python package installer. Помогает ставить всякие дополнения в Python так же, как в Debian устанавливается любое ПО — из командной строки с удалённого репозитория) и python3-venv (виртуальное окружение для запуска скриптов Python):


sudo apt update && sudo apt upgrade && sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev python3-pip python3-venv


Проверка:


pip --version


Ожидаемый ответ: pip 20.3.4 from /usr/lib/python3/dist-packages/pip (python 3.11)


Скачать нужную версию


  1. Go to https://www.python.org/ftp/python/
  2. выбрать нужную версию Python в архиве tar.xz, например, 3.8.9

Это можно из консоли в любом месте:


wget https://www.python.org/ftp/python/3.8.9/Python-3.8.9.tar.xz]> -P [[~/PythonSource|~/PythonSource]> && cd [[~/PythonSource|~/PythonSource


Распаковать снятый архив


tar -xf Python-3.8.9.tar.xz && cd Python-3.8.9


Выполнить конфгурирование


./configure --enable-optimizations --with-ensurepip=install


Вторая опция срзу установит PIP.


Побежали «checking for…». Ждём результат creating Makefile.


Make


make -j 5


Тут „5” — количество ядер в процессоре ноутбука, которые будут рады выполнить нашу команду. Выяснить их количество можно заранее командой ’nproc’.


Подождать, пока отгудятся кулеры от нагрузки. Дело может и затянуться, там выполняется некое множество тестов.


Собрать версию


Не надо использовать стандартный make install, поскольку он перезапишет существующий системный бинарный файл python3. А это может порушить уже установленный софт в системе. Используем только altinstall.


sudo make altinstall


Переместить каталог Python-3.8.9 в /opt/


Там ему и полагается быть.


sudo cp -r ~/PythonSource/Python-3.8.9/ /opt/


Можно удалить каталог ~/PythonSource.


Назначить переменную для запуска версии Python


Это самый разумный способ: действует локально для каждого пользователя и легко изменяется.


Для глобальных изменений есть аппа «update-alternatives». Целесообразность её использования очень неоднозначна.


mcedit ~/.bashrc


В самом низу файла добавить строку:


alias python3.8.9='/opt/Python-3.8.9/python'


Тонкий момент: переменную можно назвать просто «python», но лучше называть с цифрами. Сегодня она одна, завтра рядом могут встать четыре версии Python, и система именования переменных по цифрам поможет ориентироваться в этом зоопарке.


Алиас заработает или после полного релогина, или после принудительно взбадривания перечитывания файла .bashrc


. ~/.bashrc


Проверить результат


python3.8.9 --version


Ожидаемый ответ: Python 3.8.9


python3 --version


Ожидаемый ответ: Python 3.11


В системе установлены одновременно две версии Python. Основное ПО использует системную версию (3.11). Я же могу указывать, с какой версией запускать мои скрипты. При обновлении системы основная версия Python может измениться, а мой “python3.8.9” не будет затронут.


Если python3.8.9 будет удалён/заменён, система этого «не заметит».


Как использовать разные версии Python


Запуск условного hello.py с командой print("Goodbye, World!") внутри.



См. также


+pip3
+Как сделать Python-проект в Sublime


TMP


*todo Python глянуть линк


https://realpython.com/python-main-function/