我一直在反对这一点,但似乎无法弄明白。 我有一个带有一组自定义模板标签的应用程序:
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导入都会给我带来同样的错误。
追溯:here
当我注意到它被破坏时,我正在研究一些不相关的东西,所以我又恢复了一个早期的,已知的项目工作版本。仍然是同样的问题,所以我认为丹尼尔斯关于PYTHONPATH的回答是正确的,但是,我该如何修复呢?
>>> import sys
>>> sys.path
['/Users/****/Documents/dev/product/src/Product', ...]
__init __。py是一直都在那里,人群在产品中,所以它不应该在路径上吗?
我在shell中做了一些调查:
>>> 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
>>>
仍然不知道为什么特别是失败,特别是因为全面导入有效。
我花了一些时间才看到shell命令提供了比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个小时之后才会这样。
答案 0 :(得分:1)
您的crowd
应用本身可能不在您的Python路径上。添加它,或从项目中导入:from myproject.crowd.models import Foo, Bar
。
答案 1 :(得分:1)
我花了一些时间才看到shell命令提供了比django更有用的消息,这导致了这个:
事实证明它甚至没有直接与project_tags相关,它只是一个非常有用的错误消息。 project_tags.py中的导入:
from crowd.forms import SearchForm
正在打电话:
from crowdfunder.models import Payment, Project, RewardLevel, ProjectUpdate, GalleryPhoto
forms.py中的,应该是:
from models import Payment, Project, RewardLevel, ProjectUpdate, GalleryPhoto