Модуль импортирован несколько раз - PullRequest
5 голосов
/ 04 февраля 2011

Я делаю кое-что для инициализации при первой загрузке модуля.Проблема в том, что он как-то импортируется дважды, и я не могу понять, почему.Я думал, что он может быть импортирован с использованием другого пути, как в этом примере:

a.py:

from apps.blog import models
...

b.py:

from blog import models
...

Я вставляю print __name__ в моем модуле, и он распечатал blog.models дважды, так что оказалось, что проблема не в путях импорта.
Итак, есть ли какая-либо другая причина для импорта модуля несколько раз?

ОБНОВЛЕНИЕ: Я не упоминал, что использую django.Я думаю, что эта проблема связана со скриптом manage.py в django: https://docs.djangoproject.com/en/dev/releases/1.4/#updated-default-project-layout-and-manage-py

Ответы [ 2 ]

8 голосов
/ 04 февраля 2011

Обычно Python не должен импортировать модуль дважды независимо от абсолютных / относительных ссылок. Вероятно, что Python рассматривает исходный файл как два разных файла и таким образом импортирует их отдельно. Это может произойти из-за символически связанных файлов / каталогов, или рядом разных версий, или перекрывающихся каталогов в PYTHONPATH, трудно сказать.

Один из способов отследить это - использовать интерактивный отладчик. Добавьте строку import pdb; pdb.set_trace() в верхний уровень вашего файла, и в интерактивной оболочке введите bt, чтобы получить обратный след, который должен показать цепочку импорта. Продолжайте с c. Когда файл импортируется во второй раз и отладчик активирован, попробуйте bt еще раз и сравните два вывода, которые могут выявить проблему.

1 голос
/ 08 августа 2013

Вот очень хорошее обсуждение множественного импорта файла settings.py в Django http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...