Skip to main content
 首页 » 编程设计

python之Django 故障 : django. setup() 抛出 "ImportError: No module named ' project_name'"

2024年08月23日27zhoujg

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

在笔记本的开头,我需要导入几个模块,但我遇到了与这个堆栈溢出问题中详述的问题类似的问题:Relative imports in Python 3 ,(python 找不到路径,即使我从根目录运行笔记本时它也能找到)

我的解决方案是在 path 变量中指定目录根目录的绝对路径,并像下面这样附加它:

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

那行得通,我已经能够进行导入。但是,我现在遇到的问题是,当我运行一个调用 Django 模型的函数时,如下所示:

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'