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