[英]Django couldn't find my module if it is imported from a templetetag
我正在将现有的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
但是它们都from recaptcha.utils import myfunction
。 如果我仅导入recaptcha并尝试在其上执行dir
,则它什么也不显示。
奇怪的是,如果我在view.py或model.py文件中的另一个django应用程序中导入utils模块,则它可以正常工作。 我也尝试使用manage.py shell
,它也可以工作。
为了澄清起见,该项目目前不使用virtualenv。
有任何想法吗? 谢谢!
@catavaran回答的解决方案在起作用之前: 使用相对的导入,例如from ..utils import myfunction
问题在于templatetag模块recaptcha.py
和django应用程序recaptcha
具有相同的名称 ,因此当我from recaptcha import utils
键入内容时from recaptcha import utils
它将尝试从自身而不是从recaptcha
模块中查找它 。 我将django应用程序重命名为catpcha
,它可以catpcha
导入模块。
@catavaran我真的不知道为什么删除您的答案,但是如果您再次发布它,我会将其标记为正确的答案,您应该得到荣誉!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.