Django - ImportError:没有名为apps的模块

Mon*_*nil 4 python django django-models python-2.7

我正在尝试djangoproject.com网站上的Django教程,但当我到达我做第一个"makemigrations民意调查"的部分时,我不断收到此错误:

ImportError:没有名为apps的模块

Traceback (most recent call last):
  File "manage.py", line 22, in 
    execute_from_command_line(sys.argv)
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 312, in execute
    django.setup()
  File "/Library/Python/2.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Library/Python/2.7/site-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/Library/Python/2.7/site-packages/django/apps/config.py", line 112, in create
    mod = import_module(mod_path)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)

我该如何解决这个错误?

Ala*_*air 6

您的问题是您的Django版本与本教程的版本不匹配.

在Django 1.9+,该命令的startApp自动创建一个应用程序配置类,因此本教程要求您加入polls.apps.PollsConfigINSTALLED_APPS.

对于Django的1.8和更早的版本,本教程请您加入pollsINSTALLED_APPS.如果添加polls.apps.PollsConfig,则会出现导入错误,除非您PollsConfig手动创建.


Mon*_*nil 5

教程中有错误。

它指示在文件polls.apps.PollsConfigINSTALLED_APPS部分中添加settings.py。我把它从polls.apps.PollsConfig简单地改为简单地polls,就成功了。我能够成功进行迁移。

我希望这可以帮助其他面临类似问题的人。


Ton*_* Yu 5

我有一个非常相似的问题,但绝对不同于 OP。也就是说,这篇文章是我在调试问题时发现的第一个回复之一,所以我用我的问题的答案来劫持它。

问题

我正在构建的应用程序具有嵌套在父命名空间下的应用程序,例如,customapp.polls而不仅仅是polls. 我看到的错误是

ModuleNotFoundError: No module named 'polls'
Run Code Online (Sandbox Code Playgroud)

但如果您使用的是 Python 3.5 或更早版本,则可能如下所示:

ImportError: No module named polls
Run Code Online (Sandbox Code Playgroud)

请注意,这polls不是apps在原始帖子中说的。

来自这篇文章的答案

  • @Alasdair 的答案是一个很好的尝试。如果我强制执行类似的问题,我会收到关于customapp.polls.apps.PollsConfigcustomapp.polls.appsis missing 而不是的错误apps,但这可能只是版本差异。
  • @Monil 的回答“解决”了我的问题,即使我PollsConfig定义了一个子类。正如@Alasdair 所暗示的那样,有效的原因通常是因为您没有添加AppConfig子类。

解决方案

就我而言,错误抱怨polls模块丢失(不是apps)。由于@Monils回答“解决了”我的问题,我能够将其缩小到我的实际配置。我的配置看起来相当于:

class PollsConfig(AppConfig):
    name = 'polls'
Run Code Online (Sandbox Code Playgroud)

由于我将我的应用程序放在父模块下,我应该写:

class PollsConfig(AppConfig):
    name = 'customapp.polls'
Run Code Online (Sandbox Code Playgroud)


小智 1

您需要在 virtualenv 中安装所需的包才能运行 Django 项目。首先也是最重要的是为您的项目创建 virtualenv。

virtualenv env    #For python 2.7
virtualenv -p python3 env #For python 3.4
Run Code Online (Sandbox Code Playgroud)

激活 env 以安装您的要求。

source env/bin/activate
Run Code Online (Sandbox Code Playgroud)

通过使用 pip,您可以安装软件包。

pip install Django
Run Code Online (Sandbox Code Playgroud)

然后启动您的 Django 项目。