gpt4 book ai didi

python - 为什么 django.utils.importlib.import_module 不导入正确的应用程序?变量如何变化?

转载 作者:行者123 更新时间:2023-12-01 05:51:47 24 4
gpt4 key购买 nike

我遇到了“模型未安装或抽象”错误,该错误仅发生在某些机器上,但不会发生在其他机器上,当我深入研究时,我发现问题是 load_app(self, app_name, can_postpone=False) django.db.models.loading.py中的方法没有像 django 所假设的那样工作。

def load_app(self, app_name, can_postpone=False)在第 87 行,我添加了一些打印语句。(原始代码在这里:https://github.com/django/django/blob/master/django/db/models/loading.py#L87)

    self.handled[app_name] = None
self.nesting_level += 1
app_module = import_module(app_name)
print "APP--", app_name
try:
print "APPNAME-BEGIN", app_name, type(app_name)
models = import_module('.models', app_name)
print "APPNAME-END__", app_name
print "LOADD", str(models), app_name
except ImportError, e:

你会认为app_nameAPPNAME-BEGINapp_name 相同在APPNAME-END__ ...

这是输出:

2012-12-20 15:44:12.526254500 APPNAME-BEGIN users <type 'str'>
2012-12-20 15:44:12.590877500 APPNAME-END__ gradmaker
2012-12-20 15:44:12.590877500 LOADD <module 'gradmaker.models' from '/home/gradcon4/gradcon4/project/gradmaker/models.pyc'> gradmaker

app_name怎么办?改变?为什么导入了错误的模块? ( gradmaker 而不是 users )

什么情况下会发生这种情况?

最佳答案

发生的情况是其中一个 import X 行引发了 ImportError

import gradmaker.models as gradmaker 不正确,请改用 from gradmaker import models as gradmaker

ImportErrorimport_module 调用的函数之一捕获,并被跳过。

因此,发生此错误的应用程序未正确导入。

修复导入线后,一切都很好。

变量没有改变,发生的事情是代码由于错误而跳出了函数,并产生了奇怪的输出。

关于python - 为什么 django.utils.importlib.import_module 不导入正确的应用程序?变量如何变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13982442/

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