Инструкция по выполнению кода на 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
30

Argparse предоставляет флаги, подсказки и проверку типов.

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
Пакет запущен как программа

Это часто используется для утилит, поставляемых в виде пакетов. Позволяет единообразно запускать пакет независимо от текущей директории.

запуск программы на Python - comments

En
запуск программы на python (python)