从子文件夹导入Django模块

时间:2018-03-19 16:22:22

标签: python django

我有一个Django项目,在项目的根文件夹中(manage.py是)我可以做

(venv) MyName-MacBook:mydjangoproject myname$ python
>>> import django
>>> from django.core.mail import EmailMessage, send_mail
>>> 

但是,当我创建一个子文件夹时,这不再起作用了

(venv) MyName-MacBook:mydjangoproject myname$ mkdir email && cd email
(venv) MyName-MacBook:email myname$ python
>>> import django
>>> from django.core.mail import EmailMessage, send_mail
    Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/myname/Documents/MacBook:mydjangoproject/venv/lib/python3.6/site-packages/django/core/mail/__init__.py", line 11, in <module>
    from django.core.mail.message import (
  File "/Users/myname/Documents/MacBook:mydjangoproject/venv/lib/python3.6/site-packages/django/core/mail/message.py", line 7, in <module>
    from email import (
  File "/Users/myname/Documents/MacBook:mydjangoproject/email/email.py", line 2, in <module>
    from django.core.mail import EmailMessage, send_mail
ImportError: cannot import name 'EmailMessage'
>>> 

我意识到这是一个非常基本的问题,但我有点卡住了。我可以导入django,但不能导入其他功能,这很奇怪。

2 个答案:

答案 0 :(得分:2)

查看你的追溯我看到你有一个名为email的模块。

Django尝试从内置模块email导入,而python解释器认为你的模块是要导入的模块。尝试重命名该模块以避免名称冲突,你应该没问题

编辑:编辑后问题变得非常清楚。 python解释器在内置命令之前查看你的工作目录,找到email.py并尝试从那里导入

答案 1 :(得分:1)

你的项目中有一个名为django的包,不是吗:)不要这样做 - 它会让你意外导入错误的东西。