我正在将现有的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 utils
,from recaptcha.utils import myfunction
和import 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,我真的不知道为什么您的答案被删除,但是如果您再次发布它,我将标记为正确的答案,您应该得到荣誉!