[英]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.