私はしばらくこれに頭をぶつけてきましたが、それを理解できないようです。カスタムテンプレートタグのセットを備えたアプリがあります。
from django import template
from crowd.models import Payment, Project, ProjectCategory
register = template.Library()
@register.filter
def is_customer(user, project):
try:
return Payment.objects.filter(user=user, project=project).count() > 0
except:
return False
それはスローします:
'project_tags' is not a valid tag library: ImportError raised loading crowd.templatetags.project_tags: No module named models
アプリツリーは次のようになります。
crowd/
-- __init__.py
-- models.py
templatetags/
-- __init__.py
-- project_tags.py
モデルとcrowd.modelsの両方からインポートすると、同じエラーが発生します。
トレースバック:ここ
アップデート
これが壊れていることに気付いたとき、私は無関係な何かに取り組んでいたので、プロジェクトの以前の既知の動作バージョンに戻りました。それでも同じ問題なので、ダニエルズはPYTHONPATHについて答えていると思いますが、どうすればこれを修復できますか?
>>> import sys
>>> sys.path
['/Users/****/Documents/dev/product/src/Product', ...]
__init __。pyはすべてそこにあり、群衆はProductにいるので、それは道にあるべきではありませんか?
アップデート2
私はシェルでいくつかの調査を行いました:
>>> from crowd.models import *
>>> from crowd.managers import *
>>> from crowd.constants import *
>>> from crowd.templatetags import *
>>> from crowd.templatetags import project_tags
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/Murph/Documents/dev/product/src/Product/crowd/templatetags/project_tags.py", line 4, in <module>
from crowd.forms import SearchForm
File "/Users/Murph/Documents/dev/product/src/Product/crowd/forms.py", line 5, in <module>
from crowd.models import Payment, Project, ProjectUpdate, GalleryPhoto
ImportError: No module named models
>>>
特にブランケットのインポートが機能するため、特にそれが失敗する理由はまだわかりません。
アップデート3
シェルコマンドがdjangoコマンドよりも有用なメッセージを提供していることを確認するためにしばらく時間がかかりました。これにより、次のようになりました。
それはproject_tagsに直接関連していなくても、あまり有用なエラーメッセージではなかったことがわかりました。以下のproject_tags.pyへのインポート:
from crowd.forms import SearchForm
呼んでいた:
from crowd.models import Payment, Project, RewardLevel, ProjectUpdate, GalleryPhoto
forms.pyで、次のようになっているはずです。
from models import Payment, Project, RewardLevel, ProjectUpdate, GalleryPhoto
可能であれば、これを答えとして追加します。明らかに、8時間後までは追加できません。