Динамическое обновление PYTHONPATH предотвращает обновление .pyc

Чтобы позволить мне иметь ясную филеструктуру в моем проекте, я использую следующий фрагмент кода, чтобы динамически добавлять основную папку проекта в PYTHONPATH и, следовательно, гарантировать, что я могу импортировать файлы даже из расположения файлов.

import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), "."))

Так как я сделал это, когда я запускаю свой основной файл, изменения в модулях не распознаются до тех пор, пока я вручную не удалю любые файлы .pyc. Таким образом, я предполагаю, что это почему-то помешало python проверить, обновлены ли файлы pyc. Могу ли я решить эту проблему каким-либо образом?

Ответ 1

Вы можете попытаться заставить python не записывать эти *.pyc файлы.

Как избежать .pyc файлов?

Для крупных проектов это будет иметь значение с точки зрения производительности. Возможно, вам это неинтересно, а затем вы можете просто не создавать файлы pyc.

Ответ 2

Добавление пути уже импортированного модуля может вызвать у вас проблемы, если имена модулей больше не уникальны. Подумайте, что вы делаете import foo, который добавляет родительский пакет bar в sys.path - теперь можно также сделать import bar.foo. Python будет рассматривать как разные модули, которые могут испортить все, что зависит от идентичности модуля.

Вы должны действительно подумать, почему вам нужно сделать этот взлом в первую очередь. Если у вас есть исполняемый файл, размещенный внутри вашего пакета, вы не должны делать

cd bardir/bar
python foo

но вместо этого назовите его частью пакета через

cd bardir
python -m bar.foo