Инструкция по выполнению кода на Python: от простых скриптов до продвинутых сценариев
Способы запуска программ на Python
Python предоставляет несколько способов выполнения кода. Каждый из них подходит для определённых задач: от быстрых экспериментов до развёртывания продакшн-приложений. Рассмотрим основные варианты, начиная с наиболее универсального.
Запуск скрипта через интерпретатор Python
Самый распространённый способ - передать интерпретатору имя файла с кодом. Для этого в терминале выполняется команда python script.py (или python3 script.py на некоторых системах). Предварительно необходимо убедиться, что Python установлен и добавлен в переменную окружения PATH.
Пример простого скрипта:
# hello.py
print("Привет, мир!")Python выполнение программы (выполнение программы на python)
Запуск:
$ python hello.py
Привет, мир!запуск программы на python (запуск программы на python)
Для передачи аргументов используется модуль argparse или список sys.argv. Пример с парсингом аргументов:
# add.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("x", type=int)
parser.add_argument("y", type=int)
args = parser.parse_args()
print(args.x + args.y)программа для программирования на python (среда для программирования на python)
$ python add.py 3 5
8Этот способ подходит для любых проектов, легко автоматизируется через cron или shell-скрипты.
Типичные ошибки:
- Ошибка ModuleNotFoundError - отсутствует сторонняя библиотека. Решение: установить пакет через pip install package_name.
- Неправильная версия Python - скрипт написан для Python 3, а вызывается Python 2. Решение: использовать команду python3 или настроить окружение.
- Файл не найден - неверный путь. Решение: указать полный путь или перейти в директорию с файлом.
Как выполнить код без создания файла?
Интерактивный режим (REPL)
Ввод команды python без имени файла запускает интерактивную оболочку. В ней можно вводить код построчно и сразу видеть результат. Это удобно для тестирования небольших фрагментов, изучения библиотек или отладки.
$ python
Python 3.10.8 (default, ...)
[GCC ...] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello")
Hello
>>> 2 + 2
4
>>> exit()Использование REPL ограничено - код не сохраняется после закрытия оболочки. Для повторного использования его следует перенести в файл.
Проблема:
Случайное закрытие терминала приводит к потере введённого кода. Рекомендуется сразу копировать удачные решения в файл.
Как запустить модуль как программу?
Запуск с флагом -m
Флаг -m позволяет запустить модуль (файл с расширением .py или встроенный модуль) по имени, а не по пути. Например, python -m http.server запускает встроенный HTTP-сервер. Для собственных пакетов нужно, чтобы в папке присутствовал файл __main__.py.
$ python -m mypackage.mymoduleИспользуется для запуска утилит из пакетов, например, python -m venv venv для создания виртуального окружения.
Ошибка:
ModuleNotFoundError: No module named mypackage - модуль не найден. Решение: проверить имя модуля, установить пакет или добавить путь к нему в PYTHONPATH.
Как сделать скрипт исполняемым на Linux/macOS?
Shebang и права на выполнение
Поместив в первую строку файла #!/usr/bin/env python3, можно запускать скрипт как обычную программу. После этого нужно дать файлу право на выполнение через chmod +x script.py.
#!/usr/bin/env python3
print("Запуск как исполняемый файл")$ chmod +x script.py
$ ./script.py
Запуск как исполняемый файлЭто удобно для утилит командной строки - не нужно каждый раз писать python.
Проблемы:
- Ошибка Permission denied - отсутствует право на выполнение. Решение: выполнить chmod +x.
- Неверный путь к интерпретатору - /usr/bin/env python3 не найден. Решение: проверить, что Python установлен, и использовать абсолютный путь.
Как запускать код в интегрированной среде разработки?
IDE: PyCharm, VS Code, IDLE
Современные IDE предоставляют удобный интерфейс для запуска программ: кнопка Run, отладчик, управление виртуальными окружениями. В PyCharm достаточно открыть файл и нажать Ctrl+Shift+F10. В VS Code - F5 или кнопка Play.
Пример настройки в VS Code: требуется установить расширение Python и выбрать интерпретатор (нижняя панель).
Типичные ошибки:
- Не выбран интерпретатор - появляется сообщение Select Python Interpreter. Решение: указать путь к нужному python.
- Конфликт версий - проект настроен на одну версию, а IDE использует другую. Решение: создать виртуальное окружение и привязать его к проекту.
Как передать параметры при запуске скрипта?
Аргументы командной строки
Для написания консольных утилит используется модуль sys.argv (список аргументов) или argparse (расширенный парсинг). Пример с sys:
import sys
if len(sys.argv) != 3:
print("Использование: script.py x y")
sys.exit(1)
print(int(sys.argv[1]) + int(sys.argv[2]))$ python script.py 10 20
30Argparse предоставляет флаги, подсказки и проверку типов.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--name", required=True)
parser.add_argument("--age", type=int, default=0)
args = parser.parse_args()
print(f"{args.name}, {args.age} лет")$ python script.py --name Иван --age 25
Иван, 25 летОшибки:
- Неверное количество аргументов - без argparse вызовет IndexError. Решение: проверять длину sys.argv.
- Неправильный тип - argparse выдаёт ошибку, если ожидается int, а передана строка. Решение: обрабатывать исключения.
Как изолировать зависимости для проекта?
Виртуальное окружение
Виртуальное окружение создаётся командой python -m venv myenv. После активации (source myenv/bin/activate на Linux/macOS или myenv\Scripts\activate на Windows) все установки пакетов производятся внутри изолированной среды. Это гарантирует, что проект не конфликтует с глобальными пакетами.
$ python -m venv venv
$ source venv/bin/activate
(venv) $ pip install requests
(venv) $ python script.pyПри развёртывании на сервере окружение воссоздаётся из requirements.txt (создаётся через pip freeze > requirements.txt).
Проблемы:
- Забыли активировать окружение - пакеты устанавливаются в глобальную область. Решение: всегда проверять наличие префикса (venv) в приглашении терминала.
- Путь к интерпретатору в IDE не совпадает с окружением - необходимо указать путь к python в папке venv.
Дополнительные сценарии запуска Python программ
Продвинутые техники позволяют контролировать выполнение, отлаживать и автоматизировать работу скриптов.
Запуск с профилированием (cProfile)
Для анализа производительности используется модуль cProfile. Запуск скрипта с профилированием:
python -m cProfile my_script.pyПример простого скрипта для профилирования:
# slow.py
def slow_function():
total = 0
for i in range(10**6):
total += i
return total
if __name__ == "__main__":
print(slow_function())$ python -m cProfile slow.py
499999500000
4 function calls in 0.089 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.089 0.089 ex_c:1(<module>)
1 0.089 0.089 0.089 0.089 slow.py:2(slow_function)
1 0.000 0.000 0.089 0.089 {built-in method builtins.exec}
1 0.000 0.000 0.000 0.000 {built-in method builtins.print}Результат показывает время выполнения каждой функции. Полезно для поиска узких мест.
Запуск с отладчиком (pdb)
Отладчик pdb позволяет пошагово выполнять код, устанавливать точки останова и инспектировать переменные. Запуск с pdb:
python -m pdb debug_script.pyПример скрипта с ошибкой:
# buggy.py
def divide(a, b):
return a / b
x = 10
y = 0
print(divide(x, y))Команды в отладчике: break (установить точку), continue (продолжить), print (вывести значение).
$ python -m pdb buggy.py
> /home/user/buggy.py(2)<module>()
-> def divide(a, b):
(Pdb) break 8
Breakpoint 1 at /home/user/buggy.py:8
(Pdb) continue
> /home/user/buggy.py(8)<module>()
-> print(divide(x, y))
(Pdb) print(x)
10
(Pdb) print(y)
0
(Pdb) step
--Call--
> /home/user/buggy.py(2)divide()
-> def divide(a, b):
(Pdb) return
ZeroDivisionError: division by zero
> /home/user/buggy.py(2)divide()
-> def divide(a, b):
(Pdb) quitЭто помогает локализовать ошибки на этапе выполнения.
Фоновый запуск скрипта с перенаправлением вывода
Для длительных задач используется запуск в фоне с записью вывода в файл. Команда:
nohup python long_task.py > output.log 2>&1 &Объяснение:
- nohup - игнорирует сигнал SIGHUP (не завершает скрипт после выхода из терминала).
- > output.log - перенаправляет стандартный вывод в файл.
- 2>&1 - перенаправляет ошибки туда же.
- & - переводит процесс в фон.
Пример программы, которая имитирует долгую работу:
# long_task.py
import time
for i in range(10):
print(f"Работаем... {i}")
time.sleep(1)
print("Готово")После запуска можно проверить процесс командой ps aux | grep python, а после завершения - просмотреть output.log.
Запуск Python скрипта из другого скрипта (subprocess)
Для автоматизации цепочек задач один скрипт может запускать другой через модуль subprocess.
# runner.py
import subprocess
import sys
result = subprocess.run([sys.executable, "worker.py", "arg1", "arg2"], capture_output=True, text=True)
print("stdout:", result.stdout)
print("stderr:", result.stderr)# worker.py
import sys
print(f"Получены аргументы: {sys.argv[1:]}")$ python runner.py
stdout: Получены аргументы: ['arg1', 'arg2']
stderr:Этот подход используется для параллельного выполнения, создания конвейеров или интеграции разных проектов.
Запуск модуля с использованием __main__.py
Если в пакете есть файл __main__.py, его можно запустить через python -m package. Пример структуры:
mypackage/
__init__.py
__main__.py
core.py# __main__.py
from .core import run
run()# core.py
def run():
print("Пакет запущен как программа")$ python -m mypackage
Пакет запущен как программаЭто часто используется для утилит, поставляемых в виде пакетов. Позволяет единообразно запускать пакет независимо от текущей директории.