gpt4 book ai didi

python - Django INSTALLED_APPS 中的点路径无法导入

转载 作者:行者123 更新时间:2023-11-30 22:51:24 25 4
gpt4 key购买 nike

我有一个规范形式的 django 项目:

.├── app1/├── app2/├── ...├── project/└── manage.py

随着所有非应用程序的附加文件夹(例如文档)的增加,保持其井然有序变得越来越困难,所以我决定这样做:

.├── modules/│   ├── __init__.py│   ├── app1/│   └── app2/├── project/└── manage.py

但是,我一生都无法弄清楚如何引用 settings.py INSTALLED_APPS 中的应用程序。改变

INSTALLED_APPS = [    ...    'app1.apps.App1Config'   -->   'modules.app1.apps.App1Config'    'app2.apps.App2Config'   -->   'modules.app2.apps.App1Config']

将在 ./manage.py runserver 上产生神秘的回溯(为了简洁起见,为/path/to/venv/)

    Traceback (most recent call last):      File "/path/to/venv/lib/python3.5/site-packages/django/utils/autoreload.py", line 226, in wrapper        fn(*args, **kwargs)      File "/path/to/venv/lib/python3.5/site-packages/django/core/management/commands/runserver.py", line 113, in inner_run        autoreload.raise_last_exception()      File "/path/to/venv/lib/python3.5/site-packages/django/utils/autoreload.py", line 249, in raise_last_exception        six.reraise(*_exception)      File "/path/to/venv/lib/python3.5/site-packages/django/utils/six.py", line 685, in reraise        raise value.with_traceback(tb)      File "/path/to/venv/lib/python3.5/site-packages/django/utils/autoreload.py", line 226, in wrapper        fn(*args, **kwargs)      File "/path/to/venv/lib/python3.5/site-packages/django/__init__.py", line 27, in setup        apps.populate(settings.INSTALLED_APPS)      File "/path/to/venv/lib/python3.5/site-packages/django/apps/registry.py", line 85, in populate        app_config = AppConfig.create(entry)      File "/path/to/venv/lib/python3.5/site-packages/django/apps/config.py", line 142, in create        app_module = import_module(app_name)      File "/path/to/venv/lib/python3.5/importlib/__init__.py", line 126, in import_module        return _bootstrap._gcd_import(name[level:], package, level)      File "", line 986, in _gcd_import      File "", line 969, in _find_and_load      File "", line 956, in _find_and_load_unlocked    ImportError: No module named 'app1'

奇怪的是,如果我从 INSTALLED_APPS 中删除它们,该项目将(勉强)工作。例如,请求被集中到各自的 urls.py、 View 被渲染等。

我尝试使用新的干净虚拟环境创建一个空的新项目,其中仅在 Python 3.5 上运行 Django 1.10,但我无法弄清楚。 (是的,我有 __init__.py 任何需要的地方)

我错过了什么?

最佳答案

除了更新 INSTALLED_APPS 之外,您还需要更新 AppConfig.name 属性以使用新路径。例如:

class App1Config(AppConfig):
name = 'modules.app1'
...

关于python - Django INSTALLED_APPS 中的点路径无法导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39034812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com