Задать вопрос
@PyLearner

Как работает компиляция модулей в python?

Читаю документацию модулей в Python, не могу понять предпоследний абзац в блоке про компиляцию: https://docs.python.org/3/tutorial/modules.html#co...
Python does not check the cache in two circumstances. First, it always recompiles

Что always recompiles? Питон всегда рекомпилирует или кэш рекомпилируется? И почему всегда, если сверху в документации написано, что модуль рекомпилируется только если кэш устарел.
and does not store the result for the module that’s loaded directly from the command line

Что подразумевается под result?
Second, it does not check the cache if there is no source module. To support a non-source (compiled only) distribution, the compiled module must be in the source directory and there must not be a source module.

Для поддержки скомпилированной версии, где нет источника, скомпилированная версия должна быть в папке с источником (Которого нет???)?

Благодарю за объяснение.
  • Вопрос задан
  • 452 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
First, it always recompiles and does not store the result for the module that’s loaded directly from the command line.

Значит, что скрипт переданный интерпретатору непосредственно будет всегда компилироваться заново. Если написать python test.py, то неважно есть ли test.pyc. А если test.py будет импортироваться из другого скрипта или интерактивного сеанса интерпретатора, то будет загружена скомпилированная версия из кэша.

Second, it does not check the cache if there is no source module.

Если нет исходного файла, кэш в каталоге __pycache__ будет проигнорирован.

To support a non-source (compiled only) distribution, the compiled module must be in the source directory and there must not be a source module.

Чтобы выполнялась скомпилированная версия при отсутствии исходника, нужно чтобы pyc-файл лежал не в __pycache__, а вместо py-файла.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы