python3 -O file.py не создал file.pyo

Я написал простой скрипт test.py, содержащий:

print('hello')

а затем использовать python -O test.py запустить его. Я ожидал, что это создаст test.pyo файл, но это не так.

Моя версия Python 3.5.2. Почему не был создан файл кэша?

1 ответ

Решение

Python создает файлы кэша байт-кода только для импортированных модулей. Основной скрипт (здесь test.py) не кешируется. Неважно, какой уровень оптимизации применяется.

Импортировать test:

$ python -O -c 'import test'
hello
$ ls __pycache__
test.cpython-35.opt-1.pyc

Обратите внимание, что файл кэша был создан в отдельном каталоге с именем __pycache__ и что имя файла основано не только на имени модуля, но также на версии Python и уровне оптимизации; использование -OO получить .opt-2, Начиная с Python 3.5, .pyo Расширение имени файла больше не используется, см. PEP 488 - Удаление файлов PYO и см. PEP 3147 - Каталоги репозитория PYC относительно того, почему используется отдельный каталог.

Если вы хотите предварительно скомпилировать свои модули, используйте python3 -m compileall инструмент

Другие вопросы по тегам