Работа с командной строкой Python 3 в администрировании

Раздел: Системное администрирование -> администрирование

Открытие терминала Python 3

Как запустить интерактивную сессию Python 3 из командной строки?

Основной и наиболее надёжный способ - использование команды python3. После её выполнения появляется приглашение >>>, готовое к вводу инструкций. Этот метод одинаково работает в Linux, macOS и в Windows (при условии, что Python 3 добавлен в PATH).

$ python3
Python 3.11.4 (main, Jun 20 2023, 10:34:32)
[GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello, admin!")
Hello, admin!

Python установка программы (установка программы на python)

Если после установки Python 3 команда python3 не найдена, следует проверить переменную окружения PATH и путь к исполняемому файлу.

Типичная ошибка: python3: command not found. Решение - установить пакет python3 (в Ubuntu/Debian: sudo apt install python3) или указать полный путь, например /usr/bin/python3.

Как использовать версию Python по умолчанию (python)?

В некоторых дистрибутивах (например, Arch Linux) команда python может указывать на Python 3. Но на многих системах (в том числе Ubuntu) python относится к Python 2. Чтобы не ошибиться, рекомендуется всегда использовать python3. Если же системный администратор явно настроил символьную ссылку, можно проверить так:

$ python --version
Python 2.7.18
$ python3 --version
Python 3.10.12

создание пользователя python (создание пользователя в системе с помощью python)

Для создания собственного псевдонима (alias) в .bashrc:

alias python='python3'

терминал python 3 (открытие терминала python 3)

Но такой подход может нарушить работу скриптов, ожидающих Python 2, поэтому применять его стоит осмотрительно.

Проблема: после установки псевдонима скрипты, написанные для Python 2, перестают работать. Решение - использовать python3 явно или настраивать alias только для интерактивного режима.

Как открыть терминал Python 3 в виртуальном окружении?

В системном администрировании часто требуется изолировать зависимости. После активации виртуального окружения команда python автоматически указывает на интерпретатор Python 3 внутри этой среды.

$ python3 -m venv myenv
$ source myenv/bin/activate
(myenv) $ python
Python 3.11.4 (main, Jun 20 2023, 10:34:32)
[GCC 12.2.0] on linux
Type "help", ...
>>> import sys; print(sys.executable)
/home/user/myenv/bin/python

Выход из окружения - командой deactivate.

Ошибка: venv не доступен в Python 3 - может отсутствовать пакет python3-venv. Устанавливается в Debian/Ubuntu командой sudo apt install python3-venv.

Как выполнить однострочный код без входа в интерактивный режим?

Для быстрых проверок или автоматизации административных скриптов используется флаг -c. Например, узнать установленную версию:

$ python3 -c "import sys; print(sys.version)"
3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]

Такой вызов не входит в REPL и завершается после выполнения команды.

Нюанс: внутри строки с -c нельзя использовать кавычки того же типа, что обрамляют команду. Для вложенных кавычек применяют экранирование или комбинируют двойные и одинарные.

Как открыть терминал Python 3 с помощью IDLE (GUI)?

IDLE - это встроенная среда разработки, которая включает интерактивное окно. Для запуска из командной строки:

$ idle3   # или idle (если настроена)

IDLE может быть полезна для тестирования небольших фрагментов кода, но для системного администрирования удобнее терминальный режим.

Проблема: idle3 не установлен - решается через менеджер пакетов: sudo apt install idle3.

Как запустить интерактивную сессию после выполнения скрипта?

Флаг -i заставляет Python после исполнения файла перейти в режим REPL. Это удобно для отладки:

$ python3 -i script.py
<вывод script.py>
>>> <продолжение работы с переменными, определёнными в script.py>

Предостережение: если скрипт завершается с ошибкой, REPL всё равно запускается, но состояние может быть нестабильным. Следует проверять переменные.

Расширенные примеры работы с терминалом Python 3

Запуск отладчика pdb внутри терминала

Команда python3 -m pdb script.py запускает скрипт под управлением отладчика. Пошаговый режим позволяет анализировать выполнение:

Пример
$ python3 -m pdb -c 'continue' myscript.py
> /home/user/myscript.py(1)<module>()
-> import sys
(Pdb) break 10
Breakpoint 1 at /home/user/myscript.py:10
(Pdb) continue
... (остановка на строке 10)

Результат:

(Pdb) list
5     def process(data):
6         result = []
7         for item in data:
8             if item > 0:
9                 result.append(item)
10 ->        return result
...
(Pdb) print(result)
[1, 2, 3]

Профилирование кода с cProfile

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

Пример
$ python3 -m cProfile -s time my_script.py

Пример вывода (сводка по функциям):

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
  100    0.500    0.005    0.800    0.008 {built-in method builtins.print}
    1    0.200    0.200    1.200    1.200 my_script.py:10(heavy_function)

Интерактивная проверка модулей и путей

В REPL можно исследовать sys.path и доступность библиотек:

Пример
$ python3
>>> import sys
>>> sys.path
['', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', ...]
>>> import os
>>> print(os.getcwd())
/home/user

Вызов pip внутри терминала Python

Иногда требуется установить пакет прямо из интерактивной сессии, не выходя из неё:

Пример
>>> import subprocess
>>> subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'requests'])

Результат:

Collecting requests
  Downloading requests-2.31.0-py3-none-any.whl (62 kB)
Installing collected packages: requests
Successfully installed requests-2.31.0

Использование Python 3 в Docker контейнере

Для изолированного тестирования административных скриптов запускают контейнер с Python:

Пример
$ docker run -it --rm python:3.11-slim python3
Python 3.11.4 (main, Jun 20 2023, 12:12:42)
[GCC 12.2.0] on linux
>>> import platform
>>> print(platform.python_version())
3.11.4

Контейнер автоматически удаляется после выхода.

Загрузка профиля и автоматическая настройка REPL

Через переменную окружения PYTHONSTARTUP можно задать скрипт, который выполняется при старте интерактивной сессии:

Пример
$ export PYTHONSTARTUP=~/.pythonrc
$ cat ~/.pythonrc
import readline
import rlcompleter
readline.parse_and_bind('tab: complete')
$ python3
>>> sys.<TAB>
sys.abiflags       sys.addaudithook   sys.api_version    sys.argv

Автодополнение по Tab упрощает администрирование.

открытие терминала python 3 - comments

En
терминал python 3 (python)