Django - ImportError:没有名为应用程序的模块
Posted
技术标签:
【中文标题】Django - ImportError:没有名为应用程序的模块【英文标题】:Django - ImportError: No module named apps 【发布时间】:2017-01-24 04:39:59 【问题描述】:我正在 djangoproject.com 网站上试用 Django 教程,但是当我到达执行第一次“makemigrations polls”的部分时,我不断收到此错误:
回溯(最近一次通话最后): 文件“manage.py”,第 22 行,在 execute_from_command_line(sys.argv) 文件“/Library/Python/2.7/site-packages/django/core/management/__init__.py”,第 338 行,在 execute_from_command_line 实用程序.execute() 文件“/Library/Python/2.7/site-packages/django/core/management/__init__.py”,第312行,在执行 django.setup() 文件“/Library/Python/2.7/site-packages/django/__init__.py”,第 18 行,在设置中 apps.populate(settings.INSTALLED_APPS) 文件“/Library/Python/2.7/site-packages/django/apps/registry.py”,第 85 行,在填充 app_config = AppConfig.create(入口) 文件“/Library/Python/2.7/site-packages/django/apps/config.py”,第 112 行,在创建中 mod = import_module(mod_path) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py”,第 37 行,在 import_module __import__(名称)ImportError: 没有名为应用程序的模块
我该如何解决这个错误?
【问题讨论】:
你安装了哪个版本的Django? 当我输入python -m django --version
时得到这个:/usr/bin/python: No module named django.__main__; 'django' 是一个包,不能直接执行
确保正确安装 django。
向我们展示您的目录结构和 settings.py 文件
正确卸载和安装 Django。
【参考方案1】:
你的问题是你的Django版本和教程的版本不匹配。
在 Django 1.9+ 中,startapp 命令会自动创建一个应用配置类,因此the tutorial 要求您将polls.apps.PollsConfig
添加到INSTALLED_APPS
。
对于 Django 1.8 及更早版本,the tutorial 要求您将 polls
添加到 INSTALLED_APPS
。如果您改为添加polls.apps.PollsConfig
,则会出现导入错误,除非您手动创建PollsConfig
。
【讨论】:
【参考方案2】:教程有错误。
它指示在settings.py
文件的INSTALLED_APPS
部分添加polls.apps.PollsConfig
。我将它从polls.apps.PollsConfig
更改为简单的polls
,就成功了。我能够成功进行迁移。
我希望这对面临类似问题的其他人有所帮助。
【讨论】:
我认为教程没有错误,问题是您使用的教程版本错误。 知道为什么这个解决方案有效,因为它对我也有效。【参考方案3】:我遇到了一个非常类似的问题,但肯定是与 OP 不同。也就是说,这篇文章是我在调试问题时发现的第一批回复之一,所以我在劫持它并回答我的问题。
问题
我正在构建的应用程序具有嵌套在父命名空间下的应用程序,例如customapp.polls
而不仅仅是 polls
。我看到的错误是
ModuleNotFoundError: No module named 'polls'
但如果您使用的是 Python 3.5 或更早版本,则可能如下所示:
ImportError: No module named polls
请注意,这在原始帖子中是 polls
而不是 apps
。
这篇文章的答案
@Alasdair 的answer 是一个不错的尝试。如果我强制执行类似的问题,我会收到关于缺少customapp.polls.apps.PollsConfig
和 customapp.polls.apps
而不是 apps
的错误,但这可能只是版本不同。
@Monil 的answer“解决了”我的问题,即使我定义了PollsConfig
子类。正如@Alasdair 所建议的那样,有效的原因通常是因为您没有添加AppConfig
子类。
解决方案
就我而言,该错误抱怨缺少polls
模块(不是apps
)。而且由于@Monils answer“解决了”我的问题,我能够将其缩小到我的实际配置。我的配置看起来相当于:
class PollsConfig(AppConfig):
name = 'polls'
但是因为我把我的应用放在一个父模块下面,我应该写:
class PollsConfig(AppConfig):
name = 'customapp.polls'
【讨论】:
这个。适用于 Django 2.0+。应该注意的是,customapp/settings.py 中的条目应该将安装的应用程序命名也从“polls”更改为“customapp.polls”。谢谢!【参考方案4】:你需要在你的 virtualenv 中安装所需的包来运行 Django 项目。首先为您的项目创建 virtualenv。
virtualenv env #For python 2.7
virtualenv -p python3 env #For python 3.4
激活环境来安装您的要求。
source env/bin/activate
通过使用 pip 你可以安装你的包。
pip install Django
然后开始你的 Django 项目。
【讨论】:
【参考方案5】:在 Django 1.10.6 中,我遇到了同样的错误(“没有名为...的模块”)。对我有用的解决方案是在settings.py
中将"polls.apps.PollsConfig"
更改为"mysite.polls"
。 o.O
【讨论】:
【参考方案6】:我找到了适合我的解决方案。当您在InstalledApps
中写入polls.apps.PollsConfig
时,您需要记住,第一个polls
指的是创建的应用程序,而不是站点。
在 Django 文档中,它可能有点混乱。
【讨论】:
以上是关于Django - ImportError:没有名为应用程序的模块的主要内容,如果未能解决你的问题,请参考以下文章
Python3.7 ImportError:没有名为“django”的模块
ImportError:仅在 django 中没有名为“bs4”的模块
Django:ImportError:没有名为'corsheaders'的模块
ImportError:没有名为 django.core.wsgi 的模块