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
инструмент