Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:Can';t导入&x27;模块';。检查模块AppConfig.name是否正确_Python_Django_Python 3.x - Fatal编程技术网

Python Django:Can';t导入&x27;模块';。检查模块AppConfig.name是否正确

Python Django:Can';t导入&x27;模块';。检查模块AppConfig.name是否正确,python,django,python-3.x,Python,Django,Python 3.x,可能看起来像是一个已经回答过的问题,实际上你有和我一样的问题。我的问题是,这只是一个小把戏,一句话,没有解释(虽然它仍然不同,但给出的解决方案有效,这是我问题的一部分)。 以下是我的简化项目结构: manage.py compfactu/---settings.py |--__init__.py |--core/--------__init__.py |-apps.py 下面是我如何在已安装的应用程序

可能看起来像是一个已经回答过的问题,实际上你有和我一样的问题。我的问题是,这只是一个小把戏,一句话,没有解释(虽然它仍然不同,但给出的解决方案有效,这是我问题的一部分)。 以下是我的简化项目结构:

manage.py
compfactu/---settings.py
          |--__init__.py
          |--core/--------__init__.py
                         |-apps.py  
下面是我如何在已安装的应用程序中添加我的应用程序的:

apps.py

from django.apps import AppConfig


class CoreConfig(AppConfig):
    name = 'core'
INSTALLED_APPS = [ 
    ...
    #compfactu modules
    'compfactu.core.apps.CoreConfig',
]
设置.py

from django.apps import AppConfig


class CoreConfig(AppConfig):
    name = 'core'
INSTALLED_APPS = [ 
    ...
    #compfactu modules
    'compfactu.core.apps.CoreConfig',
]
当我阅读django 1.11文档时,我引用:

新应用程序应避免默认的应用程序配置。相反,它们应该要求在已安装的应用程序中显式配置相应AppConfig子类的虚线路径

很好,这是一个新的应用程序,所以我应该这样做:但我得到了一个错误。这不是pythonpath的问题,因为我刚刚打开了一个python shell,我可以从compfactu.core.apps导入CoreConfig
,没有问题(也可以打印sys.path,一切都很好)

但我有一个错误,这里有一个完整的回溯:

Traceback (most recent call last):
  File "/home/jbjaillet/Projets/venvcompfactu/lib/python3.5/site-packages/django/apps/config.py", line 147, in create
    app_module = import_module(app_name)
  File "/home/jbjaillet/Projets/venvcompfactu/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 956, in _find_and_load_unlocked
ImportError: No module named 'core'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jbjaillet/Projets/venvcompfactu/lib/python3.5/site-packages/django/utils/autoreload.py", line 228, in wrapper
    fn(*args, **kwargs)
  File "/home/jbjaillet/Projets/venvcompfactu/lib/python3.5/site-packages/django/core/management/commands/runserver.py", line 117, in inner_run
    autoreload.raise_last_exception()
  File "/home/jbjaillet/Projets/venvcompfactu/lib/python3.5/site-packages/django/utils/autoreload.py", line 251, in raise_last_exception
    six.reraise(*_exception)
  File "/home/jbjaillet/Projets/venvcompfactu/lib/python3.5/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/home/jbjaillet/Projets/venvcompfactu/lib/python3.5/site-packages/django/utils/autoreload.py", line 228, in wrapper
    fn(*args, **kwargs)
  File "/home/jbjaillet/Projets/venvcompfactu/lib/python3.5/site-packages/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/jbjaillet/Projets/venvcompfactu/lib/python3.5/site-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/home/jbjaillet/Projets/venvcompfactu/lib/python3.5/site-packages/django/apps/config.py", line 151, in create
    app_name, mod_path, cls_name,
django.core.exceptions.ImproperlyConfigured: Cannot import 'core'. Check that 'compfactu.core.apps.CoreConfig.name' is correct.
它起作用了!我不明白那一点!阅读文档(我刚才引用的部分),它应该不起作用(注意我的
init\uuuuuuuuuuuuuupy.py
中没有
默认的应用程序配置

所以,关于我在哪里找到“诀窍”但没有解释的问题,我在这里问为什么它以这种方式工作,而它不应该这样,为什么官方文件中的解决方案不起作用


提前感谢您抽出时间。

根据文档,
AppConfig.name
是应用程序的完整python路径

AppConfig.name 应用程序的完整Python路径,例如“django.contrib.admin”

此属性定义配置应用于哪个应用程序。 它必须在所有AppConfig子类中设置

它在Django项目中必须是唯一的

试试这个:

class CoreConfig(AppConfig):
    name = 'compfactu.core'

很好,绝对是这样。因为我在“普通”django项目树中还有一个目录。谢谢。节省了我的时间。非常感谢