Перейти до змісту

Виконання модулів і пакетів

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

Модуль як скрипт

Щоб запустити на виконання певний модуль інтерпретатору треба вказати спеціальну опцію -m і далі ім'я самого модуля.

Наприклад:

c:\>python -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

У цьому випадку змінна __name__ всередині модуля буде мати спеціальне значення __main__. Це дозволяє визначити блок коду, який буде виконано лише у тому випадку, коли ваш модуль було запущено як скрипт:

# модуль usefull
def f():
    pass
def test():
    assert f() == None
if __name__ == '__main__':
    print('Running test')
    test()
    print('OK')

Пакет як скрипт

Пакет, як і модуль, теж може бути запущеним самостійно шляхом передачі його в якості аргумента інтерпретатору Python. Для цього пакет повинен містити файл __main__.py. Саме цей файл і буде виконано!

Але перед цим буде виконано ще й __init__.py! Чому так? Тому що __main__.py вважається пакетом модудів, а перед тим, як виконати пакет, необхідно ініціалізувати модуль.

"Компіляція" байт-кода

Є можливість "примусово" створити байт-код для певного модуля. Для цього інтерпретатору передають ім'я модуля і вказують додаткові опції:

  • -O — ця опція змушує інтерпретатор компілювати так званий оптимізований байт-код який зберігається у файлах з розширенням .pyo. З кода видаляються assert, ігнорується умовний дебаг, .pyc- файли ігноруються.
  • -OO — те ж саме, плюс видаляються коментарі.
Back to top