Django не видит настройки при запуске проекта
Для телеграм бота хочу сделать админку с помощью Django (для разработки бота использую aiogram). Бот запускается с помощью app.py в корневом каталоге проекта. Структуру проекта можете видеть на скриншоте ниже. В настройках django указал имя приложения, в загрузочном файле app.py указал окружение, однако при запуске вылетает следующая ошибка
Traceback (most recent call last):
File "c:\Users\Артём\Desktop\SfeduNet bot\app.py", line 3, in <module>
from loader import bot, storage, db
File "c:\Users\Артём\Desktop\SfeduNet bot\loader.py", line 8, in <module>
from utils.db_api.postgresql import Database
File "c:\Users\Артём\Desktop\SfeduNet bot\utils\__init__.py", line 1, in <module>
from . import db_api
File "c:\Users\Артём\Desktop\SfeduNet bot\utils\db_api\__init__.py", line 2, in <module>
from . import db_cmd
File "c:\Users\Артём\Desktop\SfeduNet bot\utils\db_api\db_cmd.py", line 1, in <module>
from test_proj.botdata.models import User
File "c:\Users\Артём\Desktop\SfeduNet bot\test_proj\botdata\models.py", line 3, in <module>
class TimeBasedModel(models.Model):
File "C:\Python39\lib\site-packages\django\db\models\base.py", line 108, in __new__
app_config = apps.get_containing_app_config(module)
File "C:\Python39\lib\site-packages\django\apps\registry.py", line 253, in get_containing_app_config
self.check_apps_ready()
File "C:\Python39\lib\site-packages\django\apps\registry.py", line 135, in check_apps_ready
settings.INSTALLED_APPS
File "C:\Python39\lib\site-packages\django\conf\__init__.py", line 82, in __getattr__
self._setup(name)
File "C:\Python39\lib\site-packages\django\conf\__init__.py", line 63, in _setup
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
Прилагаю код
settings.py из django
INSTALLED_APPS = [
'botdata',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
app.py
from aiogram.bot.bot import Bot
from aiogram.types import BotCommand
from loader import bot, storage, db
import os
import django
import handlers
async def on_shutdown(dp):
await bot.close()
await storage.close()
async def set_commands(bot: Bot):
commands = [
BotCommand("start", "Запуск бота"),
BotCommand("login", "Авторизация(для админов)"),
BotCommand("exit", "Выход")
]
await bot.set_my_commands(commands)
async def on_startup(dp):
# await db.create_connection()
# await db.create_data_tables()
await set_commands(bot)
def setup_django():
os.environ.setdefault(
'DJANGO_SETTINGS_MODULE',
'test_proj.test_proj.settings'
)
os.environ.update({"DJANGO_ALLOW_ASYNC_UNSAFE": "true"})
django.setup()
if __name__ == '__main__':
setup_django()
from aiogram import executor
from handlers import dp
executor.start_polling(dp, on_shutdown=on_shutdown, on_startup=on_startup)
manage.py
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'test_proj.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()