Django应用中无法访问flights模型:存在flights应用却报模块未找到错误
解决Django Shell中找不到'flights'模块的问题
嘿,我之前也碰到过一模一样的问题,别慌,咱们一步步排查原因,搞定它!
为啥会出现这个错误?
- 应用没在Django里注册:Django只会认那些在
settings.py的INSTALLED_APPS里登记过的应用,没登记的话,它根本不知道有个叫flights的模块存在。 - 启动Shell的位置不对:你是不是在项目子目录里启动的shell?比如跑到了
flights目录或者项目配置目录里?不在根目录(就是有manage.py的那个文件夹)启动的话,Python找不到你的应用路径。 - 应用目录有问题:要么
flights文件夹里少了__init__.py文件(虽然新版本Django自动识别,但旧版本可能需要),要么你把应用名字拼错了(比如实际叫flight你写成flights,Python大小写敏感哦)。
一步步解决问题:
1. 先确认应用已经注册到INSTALLED_APPS
打开项目根目录下的settings.py,找到INSTALLED_APPS这个列表,看看里面有没有'flights'。规范点的话,也可以写'flights.apps.FlightsConfig'(就是flights/apps.py里的类名)。比如:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 把你的应用加在这里 'flights', ]
改完保存,重新启动shell试试导入。
2. 确保在正确的目录启动Shell
打开终端,切换到有manage.py的那个项目根目录,然后再执行:
python manage.py shell
这时候再输入from flights.models import *,应该就能找到了。
3. 检查应用的目录结构
你的flights应用目录得是这个样子的:
你的项目根目录/ ├── manage.py ├── 项目配置目录/ # 比如和项目同名的文件夹,里面有settings.py │ └── ... └── flights/ ├── __init__.py # 这个文件不能少(旧版本Django必须) ├── admin.py ├── apps.py ├── models.py └── ...
如果缺了__init__.py,新建一个空文件就行;要是名字拼错了,赶紧改成正确的(比如把Flight改成flights,注意小写)。
4. 终极排查:检查Python路径(可选)
如果上面的方法都没用,那咱们看看Python的搜索路径里有没有你的项目。在shell里输入:
import sys print(sys.path)
看看你的项目根目录或者flights所在的目录在不在列表里。如果不在,临时加一下:
import sys sys.path.append('/你的项目根目录的绝对路径')
不过这只是临时解决,最好还是通过前面的步骤从根本上搞定,不然下次启动shell又得重新加。
内容的提问来源于stack exchange,提问作者Husrat
相关产品推荐
相关产品推荐

