Невозможно импортировать модуль настроек в django

Я создаю пользовательский интерфейс с помощью инфраструктуры аутентификации Django. Однако, когда я пытаюсь импортировать какой-либо модуль (например, модель 'User' или функцию 'authenticate'), которому необходим доступ к модулю настроек, я получаю такую ошибку:

c:/Users/Lorenzo/Desktop/progetto_mondodb_di_lorenzo_giaretta/Bit4All/BitEx/main.py
Traceback (most recent call last):
  File "c:\Users\Lorenzo\Desktop\progetto_mondodb_di_lorenzo_giaretta\Bit4All\BitEx\main.py", line 4, in <module>
    from views import mainWindow
  File "c:\Users\Lorenzo\Desktop\progetto_mondodb_di_lorenzo_giaretta\Bit4All\BitEx\views.py", line 3, in <module>
    from models import Profile
  File "c:\Users\Lorenzo\Desktop\progetto_mondodb_di_lorenzo_giaretta\Bit4All\BitEx\models.py", line 2, in <module>
    from django.contrib.auth.models import User
  File "C:\Users\Lorenzo\Desktop\progetto_mondodb_di_lorenzo_giaretta\myvenv\lib\site-packages\django\contrib\auth\models.py", line 2, in <module>
    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
  File "C:\Users\Lorenzo\Desktop\progetto_mondodb_di_lorenzo_giaretta\myvenv\lib\site-packages\django\contrib\auth\base_user.py", line 47, in <module>
    class AbstractBaseUser(models.Model):
  File "C:\Users\Lorenzo\Desktop\progetto_mondodb_di_lorenzo_giaretta\myvenv\lib\site-packages\django\db\models\base.py", line 107, in __new__
    app_config = apps.get_containing_app_config(module)
  File "C:\Users\Lorenzo\Desktop\progetto_mondodb_di_lorenzo_giaretta\myvenv\lib\site-packages\django\apps\registry.py", line 252, in get_containing_app_config
    self.check_apps_ready()
  File "C:\Users\Lorenzo\Desktop\progetto_mondodb_di_lorenzo_giaretta\myvenv\lib\site-packages\django\apps\registry.py", line 134, in check_apps_ready
    settings.INSTALLED_APPS
  File "C:\Users\Lorenzo\Desktop\progetto_mondodb_di_lorenzo_giaretta\myvenv\lib\site-packages\django\conf\__init__.py", line 79, in __getattr__
    self._setup(name)
  File "C:\Users\Lorenzo\Desktop\progetto_mondodb_di_lorenzo_giaretta\myvenv\lib\site-packages\django\conf\__init__.py", line 66, in _setup 
    self._wrapped = Settings(settings_module)
  File "C:\Users\Lorenzo\Desktop\progetto_mondodb_di_lorenzo_giaretta\myvenv\lib\site-packages\django\conf\__init__.py", line 144, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File **"C:\Users\Lorenzo\AppData\Local\Programs\Python\Python39\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)       
ModuleNotFoundError: No module named 'Bit4All'**

Похоже, что в файле _init_.py, внутри django/conf, который в настоящее время находится в моей виртуальной среде, происходит что-то неправильное при попытке импортировать модуль настройки (с importlib.import_module).

Фрагмент кода, ответственный за проблему:

class Settings:
    def __init__(self, settings_module):
        # update this dict from global settings (but only for ALL_CAPS settings)
        for setting in dir(global_settings):
            if setting.isupper():
                setattr(self, setting, getattr(global_settings, setting))

        # store the settings module in case someone later cares
        self.SETTINGS_MODULE = settings_module 
        mod = importlib.import_module(self.SETTINGS_MODULE) #settings_module = 'Bit4All.settings'
      
    ...

Здесь находятся интересующие вас файлы:

  • Bit4All

    • Bit4All

      • _init_.py

      • settings.py

        .
    • BitEx

      • _init_.py

      • main.py

      • views.py

    • _init_.py

    • manage.py

  • myvenv

    • Lib

      • django

        • conf

          • _init_.py
  • _init_.py

Мне удалось свести проблему к импорту модуля настроек, я попробовал указать пакет якоря следующим образом:

mod = importlib.import_module('.Bit4All.settings', 'Bit4All')

Я даже попробовал (временно, это было бы не очень элегантным решением) скопировать файл settings.py в ту же папку, что и файл _init_.py (django/conf/), вот так:

mod = importlib.import_module('settings')

однако, появляется та же ошибка, что и раньше (Нет модуля с именем settings)

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

NOTE: если я запускаю файл manage.py, то проблем с импортом настроек не возникает

вот установленные пакеты, если они полезны (я использую python 3.9):

Django==3.0.5
djongo==1.3.6
pymongo[srv]==3.12.1   
python-decouple==3.6
PyQt5==5.15.7

Ну это просто, вы можете использовать имя проекта для импорта настроек:

from ProjectName.settings import ModuleName
Вернуться на верх