суббота, 7 августа 2010 г.

Python: коварство рефакторинга (об удалении *.pyc файлов)

Python компилирует свои скрипты при первом запуске программы (точнее - при первом импорте из срипта, питон пытается сделать последующие обращения к скрипту чуть быстрее путем компиляции его в файл с расширением .pyc), потом он сначала ищет откомпилированный скрипт и только если его не находит - обращается к исходнику (.py).

Коварство рефакторинга (в частности, в среде разработки  PyCharm от JetBrains) заключается в том, что если вы переименовываете один из модулей (например, old_module -> new_module), то вам необходимо вручную прописать импорты в других модулях. Иначе может получиться довольно забавная ситуация: вы в новом модуле добавляете какой-то функционал, а программа при запуске импортирует .pyc файлы старого модуля, ни сколько не ругается и, разумеется, выполняет старый код.

Удалять старые компилированные файлы можно, например, такой командой:

find -type f -name '*.pyc' -exec rm {} \;