[英]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.