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

时间:2016-09-16 03:10:15

标签: python django python-2.7 django-models

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

如何解决此错误?

6 个答案:

答案 0 :(得分:6)

您的问题是您的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

答案 1 :(得分:4)

教程中有错误。

它指示在 public partial class Exception1 : System.Web.UI.Page { protected DeviceDetails deviceDetails; protected void Page_Load(object sender, EventArgs e) { deviceDetails = new DeviceDetails("Test", "My Test"); } } public class DeviceDetails { public string Name { get; set; } public string FailureDetails { get; set; } public DeviceDetails(string name, string description) { Name = name; FailureDetails = description; } } 文件的polls.apps.PollsConfig部分添加INSTALLED_APPS。我将其从settings.py更改为简单polls.apps.PollsConfig,这就是诀窍。我能够成功地进行迁移。

我希望这有助于其他遇到类似问题的人。

答案 2 :(得分:4)

我有一个非常类似的问题,但肯定与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' s answer"已解决"我的问题,即使我定义了PollsConfig子类。正如@Alasdair所说,有效的原因通常是因为你没有添加AppConfig子类。

解决方案

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

class PollsConfig(AppConfig):
    name = 'polls'

,因为我将我的应用放在父模块下面,我应该写一下:

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

答案 3 :(得分: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项目。

答案 4 :(得分:0)

在Django 1.10.6中,我遇到了同样的错误(“没有名为......的模块”)。对我有用的解决方案是在"polls.apps.PollsConfig"中更改"mysite.polls"的{​​{1}}。 o.O

答案 5 :(得分:0)

我找到了解决方案。当您在polls.apps.PollsConfig中编写InstalledApps时,请记住,第一个polls是指创建的应用程序,而不是网站。 在Django文档中,这可能会有些混乱。