Работа с командной строкой 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 упрощает администрирование.