Краткий ответ: os.remove(module_name)
удалит файл из файловой системы. del sys.modules["module_name"]
удалит модуль из кэша ранее загруженных модулей, который поддерживает текущий интерпретатор Python.
В Python, когда вы импортируете модуль, интерпретатор проверяет, существует ли файл .pyc
с тем же именем, что и файл .py
, который вы пытаетесь импортировать. Если есть, и если файл .py
не изменился с момента импорта файла .pyc
, то Python загрузит файл .pyc
(что значительно быстрее).
Если файл .pyc
не существует или файл .py
был изменен с момента создания файла .pyc
, то файл .py
загружается и создается новый файл .pyc
. (Стоит отметить, что простой запуск файла Python, скажем, test.py
будет , а не приведет к созданию test.pyc
. Только import
ing-модули вызывают это.)
sys.modules
- это совсем другое дело. Чтобы ускорить код, который дважды импортирует один и тот же модуль, Python поддерживает список модулей, которые были импортированы во время текущего сеанса интерпретатора. Если импортируемый модуль находится в sys.modules
, то будет прочитана кэшированная версия (ни файлы .py
, ни .pyc
не будут проверяться на диске). Python предоставляет встроенную функцию reload()
, которая позволяет обойти кеш модуля и выполнить перезагрузку с диска.
Для получения дополнительной информации о модульной системе Python см. Документацию по modules .