Python Django是否使用Mutt作为其电子邮件后端?

Python Django是否使用Mutt作为其电子邮件后端?,python,django,python-import,mutt,Python,Django,Python Import,Mutt,我知道您可以使用EMAIL\u BACKEND设置,我想我已经编写了一个工作的mutt后端,但是我不能将EMAIL\u BACKEND设置为我的类,因为它显然必须是字符串导入路径,而不是类的名称。本地路径(电子邮件)不起作用,因为当前目录显然不在Python导入路径中。我不能使用本地包导入(from.import),因为它当然必须是一个简单的字符串 我通过将我的模块复制到/usr/local/lib/python3.7/中来实现它,但这是一个非常糟糕的长期解决方案,甚至不值得 我的项目目录结构如

我知道您可以使用
EMAIL\u BACKEND
设置,我想我已经编写了一个工作的mutt后端,但是我不能将
EMAIL\u BACKEND
设置为我的类,因为它显然必须是字符串导入路径,而不是类的名称。本地路径(
电子邮件
)不起作用,因为当前目录显然不在Python导入路径中。我不能使用本地包导入(
from.import
),因为它当然必须是一个简单的字符串

我通过将我的模块复制到
/usr/local/lib/python3.7/
中来实现它,但这是一个非常糟糕的长期解决方案,甚至不值得

我的项目目录结构如下:
django/project/app/
,在
app/
下有
emails.py
,旁边是
settings.py
和其他。项目/应用程序结构对我来说没有多大意义(我只有一个应用程序),但我得到的印象是,这是安装Django的预期方式,所以我这样做了

它不应该是相关的,但顺便说一句,我的mutt后端代码是:

import subprocess
from django.core.mail.backends.base import BaseEmailBackend

class MuttBackend(BaseEmailBackend):
    def send_messages(self, email_messages):
        for m in email_messages: self.send(m)
    def send(self, message):
        print(message.subject, message.from_email, message.to, message.body)
        mutt = subprocess.Popen(args = ['/usr/local/bin/mutt', *message.to,
            '-s', message.subject,
            '-e', f'set from="{message.from_email}"'],
            stdin = subprocess.PIPE)
        mutt.stdin.write(bytes(message.body, 'utf-8'))
        mutt.stdin.close()

如何在不使用类的导入路径的情况下将
EMAIL\u BACKEND
设置为类,或找到其他解决方法?我在谷歌上搜索了一下,但找不到其他人能找到这样的东西。

我找到了答案。默认配置假定uWSGI是在
project/
中运行的,而不是
project/app/
,因此我需要的导入路径是
app.emails.MuttBackend

您可以指定在哪里编写
MuttBackend
(相对于项目根?
(就在
models.py
settings.py
和其他文件夹中)好的,我刚刚意识到我应该把这个放到编辑中。我编辑了这个问题,以包含有关项目目录结构的更多信息。