Django 找不到我的模块,如果它是从寺庙标签导入的



我正在将现有的Django项目升级到v1.7,并创建一些templateTags来简化使用模板。我之前创建了一些,但是其中一个正在给出以下错误:

ImportError raised loading recaptcha.templatetags.recaptcha: No module named utils

这个模块看起来像这样:

- recaptcha
     |- templatetags
     |         |- __init__.py
     |         |- recaptcha.py
     |
     |- __init__.py
     |- utils.py

有问题的导入位于 recaptcha.py 中,我尝试了from recaptcha import utilsfrom recaptcha.utils import myfunctionimport recaptcha,但它们都无法正常工作。如果我只导入recaptcha,并且我尝试在其上执行dir,则什么也没有显示。

很奇怪的是,如果我将 utils 模块导入view.py或model.py文件中的另一个django应用程序中。我也尝试使用manage.py shell,并且也有效。

作为澄清,此项目确实不是立即使用Virtualenv。

有什么想法吗?谢谢!

@catavaran在工作前回答的解决方案:使用相对导入喜欢from ..utils import myfunction

问题是TemplateTag模块recaptcha.py和DJANGO APP recaptcha 具有相同的名称,因此,当我键入from recaptcha import utils 时,它会尝试从自己而不是从recaptcha模块中找到它。我将Django应用程序重命名为catpcha,并且它可以毫无问题地导入模块。

@catavaran,我真的不知道为什么您的答案被删除,但是如果您再次发布它,我将标记为正确的答案,您应该得到荣誉!

最新更新