繁体   English   中英

ModuleNotFoundError:django 应用程序之外没有名为“config”的模块

[英]ModuleNotFoundError: No module named 'config' outside django app

我在我的项目中使用cookiecutter-django并在尝试从应用程序外部的配置导入设置时遇到问题。 获取错误ModuleNotFoundError: No module named 'config'项目结构

project
 ┣ .envs
 ┃ ┗ .local
 ┃ ┃ ┣ .bot
 ┃ ┃ ┣ .django
 ┣ bot
 ┃ ┣ __init__.py
 ┃ ┗ bot.py
 ┣ compose
 ┃ ┣ local
 ┃ ┃ ┣ django
 ┃ ┃ ┃ ┣ Dockerfile
 ┃ ┃ ┃ ┗ start
 ┃ ┃ ┗ pytelegrambot
 ┃ ┃ ┃ ┣ Dockerfile
 ┃ ┃ ┃ ┗ start
 ┣ config
 ┃ ┣ settings
 ┃ ┃ ┣ __init__.py
 ┃ ┃ ┣ base.py
 ┃ ┃ ┣ local.py
 ┃ ┣ __init__.py
 ┃ ┣ urls.py
 ┃ ┗ wsgi.py
 ┣ project
 ┃ ┣ app
 ┃ ┃ ┣ migrations
 ┃ ┃ ┃ ┗ __init__.py
 ┃ ┃ ┣ admin.py
 ┃ ┃ ┣ apps.py
 ┃ ┃ ┣ signals.py
 ┃ ┃ ┣ models.py
 ┃ ┃ ┗ views.py
 ┣ requirements
 ┃ ┣ base.txt
 ┣ README.md
 ┣ local.yml
 ┣ manage.py

机器人.py

import telebot
from config.settings.base import env

bot = telebot.TeleBot(env('BOT_TOKEN'))

def send_welcome(message):
    print(message)

if __name__ == '__main__':
    bot.infinity_polling()

信号.py

from bot.bot import send_welcome

@receiver(post_save, sender=Model)
def translate(sender, instance, created, **kwargs):
    send_wlcome("Hi")

在这里,我在创建 object 时在电报机器人上发送消息。 如果我尝试使用os.environ['BOT_TOKEN']它会给我另一个来自signals.py KeyError: 'BOT_TOKEN'错误。 BOT_TOKEN 位于.envs/.local/.bot拜托,有人可以帮忙吗?

您必须在项目目录中设置代码。

Django cookiecutter 将根路径项目定义为项目目录,因此所有代码都必须设置在那里。

在 manage.py 文件中,您可以看到将项目目录作为根路径的代码。 你可以改变它,但我不确定这是个好主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM