gpt4 book ai didi

python - Python 导入时出错

转载 作者:行者123 更新时间:2023-12-01 04:09:58 25 4
gpt4 key购买 nike

我有问题:

我正在使用这个包:https://github.com/ulule/django-badgify

它工作得很好,但现在我需要创建自定义模型徽章。我已经完成了一切,如文档中所示:

main.models.py:

from badgify.models.base.badge import Badge as BaseBadge

class GuidaBadge(BaseBadge):
class Meta(BaseBadge.Meta):
abstract = False

设置.py:

BADGIFY_BADGE_MODEL = "main.models.GuidaBadge"

但它会导致错误:

  File "D:\virtenvs\codeguida\codeguida\main\models.py", line 11, in <module>
from badgify.models.base.badge import Badge as BaseBadge
File "D:\virtenvs\codeguida\lib\site-packages\badgify\models\__init__.py", line 8, in <module>
Badge = load_class(settings.BADGE_MODEL)
File "D:\virtenvs\codeguida\lib\site-packages\badgify\utils.py", line 88, in load_class
raise exceptions.ImproperlyConfigured(txt)
django.core.exceptions.ImproperlyConfigured: Backend module "main.models" does not define a "GuidaBadge" class.

https://github.com/ulule/django-badgify/blob/master/badgify/utils.py#L79

Python 似乎找不到“GuidaBadge”类。所以我尝试在 shell 中使用函数 load_class() - 它返回正确的类...

我认为错误原因是这样的:

正如我们在 Traceback 中看到的,首先:

File "D:\virtenvs\codeguida\codeguida\main\models.py", line 11, in <module>
from badgify.models.base.badge import Badge as BaseBadge

程序要求 python 从 badgify 包中导入 Badge

然后Python尝试导入它,并遇到

File "D:\virtenvs\codeguida\lib\site-packages\badgify\models\__init__.py", line 8, in <module>
Badge = load_class(settings.BADGE_MODEL)

这里程序要求 python 从字符串加载_class(存储在设置中,例如“main.models.GuidaBadge”)

但是Python还没有运行这部分模型。并导致错误“main.models”中没有类“GuidaBadge”。

我说得对吗?

如何解决?

最佳答案

不要这样做

from badgify.models.base.badge import Badge as BaseBadge

相反

import badgify.models.base.badge

class GuidaBadge(badgify.models.base.badge.Badge):
class Meta(BaseBadge.Meta):
abstract = False

由于命名空间更改,“from”和“as”导入存在循环问题(from 导入的模块不会被识别为原始模型,因为它是作为不同的命名空间导入的)。

关于python - Python 导入时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082394/

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