Django项目爬坑:ModuleNotFoundError: No module named ‘xxxx.apps‘

报错信息

Traceback (most recent call last):
  File "C:\work\software\Anaconda3_2021\envs\py36\lib\site-packages\django\apps\registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "C:\work\software\Anaconda3_2021\envs\py36\lib\site-packages\django\apps\config.py", line 212, in create
    mod = import_module(mod_path)
  File "C:\work\software\Anaconda3_2021\envs\py36\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "", line 994, in _gcd_import
  File "", line 971, in _find_and_load
  File "", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'media.apps'

进程已结束,退出代码1

说明:media是我的一个业务应用,等同django的app概念

重点来了

proj
上面是我的两个app
Django项目爬坑:ModuleNotFoundError: No module named ‘xxxx.apps‘_第1张图片

这个是我在应用logic_center下面自定义的两个python软件包(包含__init__.py的文件夹)。
报错的原因就出在这里!!
我运行脚本feishu_to_db.py,脚本里需要用media应用的Content模型类,就开始报一开始的那个错误。从报错信息大致知道问题是django的app解析出错。
我找到报错的路径,每步都打上断点,开始单步调试。
神奇的事情就发生在我眼前
Django项目爬坑:ModuleNotFoundError: No module named ‘xxxx.apps‘_第2张图片
django注册media应用的时候,注意看它跳到哪里去
3333
!!!!注册media应用不是应该到media.app.py里去吗,你为啥这么秀,跑到logic_center.media模块里去了??
原因大概不出这两个:

  • logic_center里的media文件重名。这样其实不好,应用下的软件包名称不应该和项目的应用名相同,这相当于瓜田李下,自己给自己挖坑。
  • logic_center下的media是软件包的属性,python的import功能在第一种情况下会混淆,就出现上面报错的情况。

解决

  • 改名:把logic_center下的media改成其它名字

我没用这个办法,因为项目已经上线,突然改名字,,,额,我麻了。。。

  • 改变属性:把logic_center下的media软件包改成普通目录

删掉 media下的__init__.py文件

我选择第二种,完美解决!
Django项目爬坑:ModuleNotFoundError: No module named ‘xxxx.apps‘_第3张图片

最后送自己一首打油诗。

项目上手开心颜,
自己挖坑自己填。
天若有情天亦老,
程序人生苦亦甜。

你可能感兴趣的:(工具,django,python,后端)