Файлы с байткодом действительно создаются только для импортированных модулей? ⇐ Python
-
Anonymous
Файлы с байткодом действительно создаются только для импортированных модулей?
В моей системе я создал приложение Python, состоящее из нескольких файлов. Структура каталогов приложения следующая:
каталог_приложения |- файл_a.py |- файл_b.py |- файл_c.py Внутри скрипта file_c.py присутствуют следующие импорты:
импортировать file_a из file_b импортировать ClassB Когда я выполняю скрипт file_c.py из командной строки:
python3 file_c.py в папке application_folder создается каталог с именем __pycache__, и внутри него я нахожу два файла, содержащие байт-код Python и называемые:
__pycache__/file_a.cpython-310.pyc __pycache__/file_b.cpython-310.pyc Примечание. Я прочитал эту и другую ссылку, чтобы получить информацию о концепциях компиляции в Python, байт-коде и интерпретаторе Python как виртуальной машины.
Чтобы понять, почему создаются эти файлы, я много искал и нашел много ссылок по этой теме. Наиболее ясным может быть этот ответ, который кажется идеальным для понимания того, что происходит в моем контексте.
В ответе присутствует следующее предложение:
Запуск скрипта не считается импортом, и .pyc не будет создан.
Так вот я и спрашиваю: только для импортированных модулей создается файл с байткодом? Почему существует такая разница в управлении импортированными модулями и неимпортированными скриптами?
ИЗМЕНИТЬ Я нашел этот другой ответ очень полезным, чтобы лучше понять, как работает CPython, концепция байт-кода и файл .pyc, сохраненный на жестком диске.
В моей системе я создал приложение Python, состоящее из нескольких файлов. Структура каталогов приложения следующая:
каталог_приложения |- файл_a.py |- файл_b.py |- файл_c.py Внутри скрипта file_c.py присутствуют следующие импорты:
импортировать file_a из file_b импортировать ClassB Когда я выполняю скрипт file_c.py из командной строки:
python3 file_c.py в папке application_folder создается каталог с именем __pycache__, и внутри него я нахожу два файла, содержащие байт-код Python и называемые:
__pycache__/file_a.cpython-310.pyc __pycache__/file_b.cpython-310.pyc Примечание. Я прочитал эту и другую ссылку, чтобы получить информацию о концепциях компиляции в Python, байт-коде и интерпретаторе Python как виртуальной машины.
Чтобы понять, почему создаются эти файлы, я много искал и нашел много ссылок по этой теме. Наиболее ясным может быть этот ответ, который кажется идеальным для понимания того, что происходит в моем контексте.
В ответе присутствует следующее предложение:
Запуск скрипта не считается импортом, и .pyc не будет создан.
Так вот я и спрашиваю: только для импортированных модулей создается файл с байткодом? Почему существует такая разница в управлении импортированными модулями и неимпортированными скриптами?
ИЗМЕНИТЬ Я нашел этот другой ответ очень полезным, чтобы лучше понять, как работает CPython, концепция байт-кода и файл .pyc, сохраненный на жестком диске.
Мобильная версия