Python导入App出现问题ImproperlyConfigured

  1. 概述:
    settings.py文件中的INSTALLED_APPS中添加自定义子应用时,需要将子应用所在目录加入导报路径sys.path(如果子应用本身就在项目根路径下就不需要)。要么就要设置子应用的配置类的name值带上导包路径。
  2. 相关报错:
    django.core.exceptions.ImproperlyConfigured: Cannot import ‘users’. Check that ‘meiduo_project.apps.users.apps.UsersConfig.name’ is correct.
  3. 报错原因:
    以下是引起报错的源码:(位于*\site-packages\django\apps\config.py)
	  if app_name is None:
	            try:
	                app_name = app_config_class.name
	            except AttributeError:
	                raise ImproperlyConfigured(
	                    "'%s' must supply a name attribute." % entry
	                ) 
		# Ensure app_name points to a valid module.
      try:
          app_module = import_module(app_name)
      except ImportError:
          raise ImproperlyConfigured(
              "Cannot import '%s'. Check that '%s.%s.name' is correct." % (
                  app_name,
                  app_config_class.__module__,
                  app_config_class.__qualname__,
              )
          )

上面的app_config_class就是应用内的apps.py中的Config类,这段程序实际上会以该类的name属性作为导包路径进行导包,因此如果这个name显示的路径与sys.path脱离的话就会报错ImproerlyConfigured。
. 解决办法
有两种:

附加导包路径,将子应用所在目录加入项目导包路径,这样可以在INSTALLED_APPS中直接写子应用名字。

# 写在项目配置文件中即可
import sys
sys.path.insert(0, os.path.join(BASE_DIR, "apps"))

2、更改apps.py中配置类的name属性,使之能够被正确导入

class UsersConfig(AppConfig):
	default_auto_field = 'django.db.models.BigAutoField'
	name = 'meiduo_project.apps.users'  # 必须符合导包路径
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值