python - 将 Django 项目从 Python 2 转换为 Python 3:django.core.exceptions.AppRegistryNotReady:尚未加载应用程序
问题描述
我正在将一个 Django 网站从 Python 2 转换为 Python 3。为此,我在整个项目上运行了 2to3。现在,在运行服务器时(在 Python 2 中运行良好)。现在,似乎存在一个错误,该错误django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
似乎源于加载 django_comments 应用程序的问题。我不清楚这是否与模板/模型问题或其他问题有关。Python3 安装在该项目的虚拟环境中。
(env) user:project user$ python3 manage.py check
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_from_command_line(sys.argv)
File ".../src/project/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File ".../src/project/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 357, in execute
django.setup()
File ".../src/project/env/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File ".../src/project/env/lib/python3.7/site-packages/django/apps/registry.py", line 91, in populate
app_config = AppConfig.create(entry)
File ".../src/project/env/lib/python3.7/site-packages/django/apps/config.py", line 90, in create
module = import_module(entry)
File ".../src/project/env/lib/python3.7/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File ".../src/project/language/__init__.py", line 3, in <module>
from django_comments.models import Comment
File ".../src/project/env/lib/python3.7/site-packages/django_comments/models.py", line 7, in <module>
from .abstracts import (
File ".../src/project/env/lib/python3.7/site-packages/django_comments/abstracts.py", line 4, in <module>
from django.contrib.contenttypes.fields import GenericForeignKey
File ".../src/project/env/lib/python3.7/site-packages/django/contrib/contenttypes/fields.py", line 3, in <module>
from django.contrib.contenttypes.models import ContentType
File ".../src/project/env/lib/python3.7/site-packages/django/contrib/contenttypes/models.py", line 133, in <module>
class ContentType(models.Model):
File ".../src/project/env/lib/python3.7/site-packages/django/db/models/base.py", line 103, in __new__
app_config = apps.get_containing_app_config(module)
File ".../src/project/env/lib/python3.7/site-packages/django/apps/registry.py", line 252, in get_containing_app_config
self.check_apps_ready()
File ".../src/project/env/lib/python3.7/site-packages/django/apps/registry.py", line 135, in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
我还确保DJANGO_SETTINGS_MODULE
在 manage.py 中进行了配置。
1 #!/usr/bin/env python3
2
3 import os
4 import sys
5
6 if __name__ == "__main__":
7 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
8
9 from django.core.management import execute_from_command_line
10
11 execute_from_command_line(sys.argv)
解决方案
也许你可以在 manage.py 中这样做:</p>
import os
import django
import sys
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mis.settings")
django.setup()
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
推荐阅读
- android - Android应用程序和库的奇怪问题
- reactjs - 使用分块对 React SSR 应用程序进行 A/B 测试
- java - 无法使用 IntelliJ 应用程序配置找到或加载主类
- scala - 将一列的总和转换为“val”(变量)
- javascript - 如何获得关于悬停在 SVG 圆圈上的工具提示
- python - 从仅包含 1 列的 csv 创建数据框。像这样的数据:[1,2,3], 0, 100
- python - 有没有更短的方法来初始化这个循环?
- oracle - 如何在 Method_4 中设置动态参数?
- python-3.x - 用 NaN 替换字符串中的值
- python - 如何使用字符和数字字典绘制饼图