Чтобы позволить мне иметь ясную филеструктуру в моем проекте, я использую следующий фрагмент кода, чтобы динамически добавлять основную папку проекта в 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