首页 文章

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

提问于
浏览 32
4

我正在尝试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)

我该如何解决这个错误?

5 回答

  • 5

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

    在Django 1.9中,startapp命令自动创建一个app配置类,因此the tutorial要求你将 polls.apps.PollsConfig 添加到 INSTALLED_APPS .

    对于Django 1.8及更早版本,the tutorial要求您将 polls 添加到 INSTALLED_APPS . 如果您添加 polls.apps.PollsConfig ,则会出现导入错误,除非您手动创建 PollsConfig .

  • 4

    我有一个真正的 similar issue ,但绝对是 different than the OP . 也就是说,这篇文章是我在调试我的问题时发现的第一个回复之一,所以我在回答我的问题时劫持了它 .

    问题

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

    ModuleNotFoundError: No module named 'polls'
    

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

    ImportError: No module named polls
    

    请注意,这在原帖中说 polls 而不是 apps .

    来自这篇文章的答案

    • @ Alasdair的answer是一个很好的尝试 . 如果我强制执行类似的问题,我会收到有关 customapp.polls.apps.PollsConfigcustomapp.polls.apps 而不是 apps 的错误,但这可能只是版本上的差异 .

    • @Monil的answer "solved"我的问题,即使我定义了一个 PollsConfig 子类 . 正如@Alasdair所说,有效的原因通常是因为你没有添加一个 AppConfig 子类 .

    解决方案

    在我的情况下,错误抱怨 polls 模块丢失(不是 apps ) . 自从@Monils answer "solved"我的问题,我能够将其缩小到我的实际配置 . 我的配置看起来相当于:

    class PollsConfig(AppConfig):
        name = 'polls'
    

    but 因为我将我的应用程序放在父模块下面,所以我应该写:

    class PollsConfig(AppConfig):
        name = 'customapp.polls'
    
  • 4

    在Django 1.10.6中我遇到了同样的错误("no module named...") . 对我有用的解决方案是在 settings.py 中为 "mysite.polls" 更改 "polls.apps.PollsConfig" . o.O

  • 1

    您需要在virtualenv中安装所需的软件包才能运行Django项目 . 首先,为您的项目创建virtualenv .

    virtualenv env    #For python 2.7
    virtualenv -p python3 env #For python 3.4
    

    Actiavte env安装您的要求 .

    source env/bin/activate
    

    通过使用pip,您可以安装您的包 .

    pip install Django
    

    然后启动你的Django项目 .

  • 0

    教程中有错误 .

    它指示在 settings.py 文件的 INSTALLED_APPS 部分添加 polls.apps.PollsConfig . 我将它从 polls.apps.PollsConfig 更改为简单的 polls ,这就是诀窍 . 我能够成功地进行迁移 .

    我希望这有助于其他面临类似问题的人 .

相关问题