python - Django 麻烦 : django. setup() 抛出 "ImportError: No module named ' project_name'"

标签 python django python-3.x django-models virtualenv

我遇到了一个问题,我相信可以通过以下两种方法之一解决。我们有一个 django 项目,我正在尝试编写一些用于教学目的的 iPython 笔记本,并将它们放在项目根目录下的 tutorials 目录中(即 ~/tutorials )。

在笔记本的开头,我需要导入几个模块,但我遇到了与此堆栈溢出问题中详述的问题类似的问题:Relative imports in Python 3 ,(python 无法找到路径,尽管当我从根目录运行笔记本时可以找到路径)

我的解决方案是在 path 变量中指定目录根目录的绝对路径,并将其附加如下:

import sys
path = 'Users/greg/project_name'
sys.path.append(path)

这很有效,我已经能够进行进口了。然而,我现在遇到的问题是,当我运行一个在 Django 模型上调用 get 的函数时,如下所示:

Platform.objects.get(name='platform_name').platform_levels.get(db_name=level).id

它从 python3.4/site-packages/django/apps/registry.py 文件中引发错误:

AppRegistryNotReady: Models aren't loaded yet.

有人知道为什么它们没有被加载以及我需要做些什么不同的事情吗?如果我还需要提供其他信息来帮助您回答这个问题,请告诉我。谢谢!

编辑:@albar 的建议导致了一个新错误,我认为这是所有问题的根源。当我去运行 django.setup() 时,它会在这一行引发错误:

mod = importlib.import_module(self.SETTINGS_MODULE)

说:

ImportError: No module named 'project_name'

它是否需要能够将整个项目作为模块导入,如果需要,我如何告诉它如何找到它?

最佳答案

你必须setup脚本中的 Django:

import django
django.setup()

编辑:在此之前,您必须定义您的设置模块:

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'

关于python - Django 麻烦 : django. setup() 抛出 "ImportError: No module named ' project_name'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36552276/

相关文章:

python - 从文件创建列表字典

Python-Chess 导入失败

python - 报告生成器的建议(Python 或 Web 服务)

python - 如何设置 scipy.optimize.minimize() 中的容差?

python - 从列表中过滤字符串

python-3.x - 模块未找到错误: No module named 'dateutil.parser' ; 'dateutil' is not a package

django - Django如何从组中删除用户

python - Django 字典键,for 循环中的值不起作用

python - Django:更新未将记录保存到数据库

python - 在没有空格的情况下在 Python 中打印