Проблема, импортирующая файлы в Django settings.py

import os

for filename in os.listdir("C:\\temp"):
    print  filename
8
задан interstar 5 July 2009 в 22:41
поделиться

2 ответа

Как правило, наличие такой строки, как

from django.db import models

в settings.py , приводит к циклической зависимости. Это вызывает ошибку импорта, о которой в разных версиях Django сообщают немного по-разному. Например, если я добавляю эту строку в рабочую установку Django и вызываю «manage.py shell», я получаю:

Ошибка: не удается найти файл. 'settings.py' в каталоге содержащий './manage.py'. Кажется вы настроили вещи. У тебя будет запустить django-admin.py, передав его ваш модуль настроек. (Если файл settings.py действительно существует, это что-то вызывает ошибку ImportError.)

Если я удалю эту строку, все снова будет хорошо.

Причина в том, что механизм загрузки модели Django (расположенный в пакете django.db.models ) импортирует ] settings.py , считывает его INSTALLED_APPS , чтобы узнать, какие приложения следует установить, а затем загружает эти приложения. (Вы можете подтвердить это, добавив оператор печати в __ init __. Py для одного из установленных приложений.)

Если вы попытаетесь импортировать материал django.db в settings.py , что приведет к циклической зависимости импорта и сообщению об ошибке, связанной с ImportError .

Одним из способов решения проблемы является перемещение функциональности, которая требует проблемного импорта (и самого импорта) в приложение.

17
ответ дан 5 December 2019 в 08:25
поделиться

Так как же DJANGO_SETTINGS_MODULE установлен в вашей среде? Это может быть либо это, либо результат неявного импорта настроек, который вызывает ваш другой вложенный импорт во время импорта настроек, «циклическая зависимость», которая может иметь несколько неприятных эффектов (хотя я не верю, что это будет иметь конкретную, которую вы наблюдаете, поэтому я склоняюсь к первой гипотезе).

3
ответ дан 5 December 2019 в 08:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: