没有找到名为'polls.apps.PollsConfigdjango'的模块;Django项目教程2。

50

所以,我一直在按照这里的教程步骤https://docs.djangoproject.com/en/1.9/intro/tutorial02/进行操作,现在我到了一个步骤,需要运行以下命令:

python manage.py makemigrations polls

当我运行它时,我会得到这个错误:

python manage.py makemigrations polls
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 2218, in_find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/tgumm/pythonenv/tutorial/lib/python3.4/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
utility.execute()
  File "/home/tgumm/pythonenv/tutorial/lib/python3.4/site-packages/django/core/management/__init__.py", line 327, in execute
django.setup()
  File "/home/tgumm/pythonenv/tutorial/lib/python3.4/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/tgumm/pythonenv/tutorial/lib/python3.4/site-packages/django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
  File "/home/tgumm/pythonenv/tutorial/lib/python3.4/site-packages/django/apps/config.py", line 116, in create
mod = import_module(mod_path)
  File "/home/tgumm/pythonenv/tutorial/lib/python3.4/importlib/__init__.py", line 109, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2212, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
  File "<frozen importlib._bootstrap>", line 2237, in _find_an``d_load
  File "<frozen importlib._bootstrap>", line 2221, in _find_and_load_unlocked
ImportError: No module named 'polls.apps.PollsConfigdjango'; 'polls.apps' is not a package

这是我的模型:

from django.db import models

# Create your models here.
from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)
11个回答

163

第一个问题是回溯中出现的警告:

No module named 'polls.apps.PollsConfigdjango'

这意味着在您的INSTALLED_APPS设置中,在'polls.apps.PollsConfig'之后缺少逗号。应该是:

'polls.apps.PollsConfig',
INSTALLED_APPS = (
    ...
    'polls.apps.PollsConfig',
    'django....',
    ...
)
第二个问题是警告信息'polls.apps' is not a package,这表明您安装的是Django 1.8版本,但您正在遵循Django 1.9教程。
如果您使用Django 1.8版本,请遵循1.8版本的教程以避免遇到此类问题。在Django 1.8教程中,关于将"polls"应用添加到INSTALLED_APPS中的步骤已经被涵盖。请注意,它不使用PollsConfig
INSTALLED_APPS = (
    ...
    'polls',
)

我几乎遇到了完全相同的问题。但是,对我来说,我拼错了类名。如果这个答案解决了你的问题,ShogunT,你会接受这个答案吗? - MikeyE
这是问题的正确答案...我犯了和OP完全相同的错误。我想我从来没有见过那么多“几乎正确”的其他答案,它们会混淆“逗号问题”...再加上你的回答在时间上是第一个。很奇怪。 - mike rodent
2
逗号和分号是噩梦。 - TheOnlyAnil
1
哦我的神 - 是的!:ROFL: - R Claven

44
ImportError: No module named 'polls.apps.PollsConfigdjango'

你忘记在列表中添加 ','


33

检查 'polls.apps.PollsConfigdjango' 后面是否有逗号“,”


太棒了!解决了我的问题! - jonnyd42

14

你刚刚在'polls.apps.PollsConfig'后面漏掉了一个逗号。

别担心,这种情况最好的我们也会犯错!


12

出现“ModuleNotFoundError: No module named 'pollsdjango'”错误的人,请检查是否在 INSTALLED_APPS 中添加了 'polls' 应用程序。

INSTALLED_APPS = [
    'polls.apps.PollsConfig'
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

解决方案:

您忘记在“polls.apps.PollsConfig”行的末尾添加逗号(,)

INSTALLED_APPS = [
    'polls.apps.PollsConfig', <----this comma
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

4

引用自https://code.djangoproject.com/ticket/27139

描述

在第二部分教程“编写你的第一个Django应用程序”中,输入以下内容:

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
   ....

以下内容可能帮助您解决问题:
在导入 'polls.apps.PollsConfig' 时出现 ImportError: No module named 'polls.apps'; 'polls.apps' 不是一个包。

这个问题可以通过将文本更改为以下内容来解决:

INSTALLED_APPS = [
    'polls',
   ....

解决了我的问题。但是我的 Django 版本是 2.0.4,Python 版本是 3.6.5。根据文档,自版本 1.9 起 Django 将生成 apps.py…所以不知道为什么。 - mbo

3

我可以帮您进行翻译。这段内容涉及到IT技术方面,您遇到了一个类似的错误:ImportError: No module named 'polls'

问题的原因是您将应用程序存储在“apps”目录中。

解决方法是更改apps.py中的代码:

从:

class PollsConfig(AppConfig):
    name = 'polls'

转到(“apps”是我的Django应用程序目录的名称):

class PollsConfig(AppConfig):
    name = 'apps.polls'

2

你忘记在 'polls.apps.PollsConfig' 后面加上逗号 "," 了,必须包含逗号 "," ... 'polls.apps.PollsConfig',


1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

1
如果你是从Django教程过来的,这里有一个问题。你刚刚漏掉了在'polls.apps.PollsConfig'之后加上一个逗号,正确的写法应该是:
INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    ....
]

0
如果以上/以下的解决方法都无法解决您的问题,并且您因为相同的错误而来到这里,请确保您的顶级目录中没有__init__.py文件。希望这能帮助到某个人!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接