我将现有的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 utils
,from recaptcha.utils import myfunction
和import recaptcha
,但没有一个有效。如果我只导入recaptcha并尝试在其上执行dir
,则它什么都不显示。
奇怪的是,如果我在view.py或model.py文件中的另一个django应用程序中导入 utils 模块,它可以完美地运行。我也尝试使用manage.py shell
,它也有效。
作为澄清,这个项目现在不使用virtualenv。
有什么想法吗?谢谢!
答案 0 :(得分:1)
@catavaran之前解答的解决方案:使用相对导入,例如from ..utils import myfunction
问题是模板标签模块recaptcha.py
和django应用recaptcha
具有相同名称,因此当我输入from recaptcha import utils
时尝试从自身而不是recaptcha
模块中找到它。我将django应用程序重命名为catpcha
,它可以毫无问题地导入模块。
@catavaran我真的不知道为什么你的答案会被删除,但是如果你再次发布它我会把它标记为正确的答案,你应该获得荣誉!