У меня есть приложение Django, и где-то в нем есть рекурсивный импорт, который вызывает проблемы. Из-за размера приложения у меня возникла проблема, указывающая причину циклического импорта.
Я знаю, что ответ заключается в том, что "просто не пишите циклические импортные данные", но проблема в том, что мне сложно определить, откуда идет циклический импорт, поэтому в идеале инструмент, который отслеживает импорт обратно происхождение было бы идеальным.
Существует ли такой инструмент? Если учесть это, я чувствую, что делаю все, что в моих силах, чтобы избежать проблем с циклическим импортом - если возможно, перемещать импорт в нижнюю часть страницы, перемещая их внутри функций, а не располагая их вверху и т.д., Но все же сталкиваясь с проблемами, Мне интересно, есть ли какие-либо советы или рекомендации, чтобы вообще избежать их.
Чтобы разработать немного...
В Django, когда он сталкивается с циклическим импортом, иногда он выдает ошибку, но иногда он проходит молча, но приводит к ситуации, когда некоторые модели или поля просто отсутствуют. Разочарочно это часто происходит в одном контексте (скажем, на сервере WSGI), а не в другом (оболочке). Поэтому тестирование в оболочке будет работать так:
Foo.objects.filter(bar__name='Test')
но в Интернете выбрасывается ошибка:
FieldError: невозможно удалить ключевое слово 'bar__name' в поле. Возможны следующие варианты:...
С видимым отсутствием нескольких полей.
Таким образом, это не может быть прямой проблемой с кодом, поскольку он работает в оболочке, но не через веб-сайт.
Какой-то инструмент, который понял, что происходит, будет замечательным. ImportError
- это, возможно, наименее полезное сообщение исключения.