如果从模板标签导入,Django无法找到我的模块

时间:2015-05-05 12:23:22

标签: python django django-templates

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

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,则它什么都不显示。

奇怪的是,如果我在view.py或model.py文件中的另一个django应用程序中导入 utils 模块,它可以完美地运行。我也尝试使用manage.py shell,它也有效。

作为澄清,这个项目现在使用virtualenv。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

@catavaran之前解答的解决方案:使用相对导入,例如from ..utils import myfunction

问题是模板标签模块recaptcha.py和django应用recaptcha 具有相同名称,因此当我输入from recaptcha import utils 时尝试从自身而不是recaptcha模块中找到它。我将django应用程序重命名为catpcha,它可以毫无问题地导入模块。

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