2009-08-31 23 views
2

我一直在拉我的头发试图解决这个问题,我已经尝试了一切,我没有想法。需要帮助解决sorl缩略图错误:“'缩略图'不是一个有效的标签库:”

我不断看到此错误: 异常值:“缩略图”是不是一个有效的标记库:无法从django.templatetags.thumbnail加载模板库,没有模块名为sorl.thumbnail.main

$ DJANGO_PACKAGES /sorl/thumbnail/main.py确实存在。

这里就是我所做的设置,

  1. 下载最新SORL-的缩略图,并在INSTALLED_APPS包含 'sorl.thumbnail' 的.bash_profile

  2. 添加其位置到Python的路径(Django的settings.py)

  3. 使用的{%负载缩略图%}标签在Django模板

看起来很明显sorl-thumbnail安装不正确,但是我能够从python shell和django shell导入缩略图(当我使用{%load thumbnail%}时会带来这个错误)。此外,在相关文件中没有错别字(我已经检查了很多次)。

回答

2

我会冒险猜测这是一个$ PYTHONPATH问题。 “缩略图”目录是否可能在路径上而不是“sorl”?我怀疑这是问题,因为你不想在Python解释器上键入“导入缩略图”。你应该输入“import sorl.thumbnail”。

另一件事是检查导入后打印模块名称:

>>> import thumbnail 
>>> print thumbnail 

这将显示在模块中发现的文件系统位置,在情况下,它加载另一个副本,从什么地方,你不要指望。

您还想确保您当前的工作目录不是根目录../sorl/位置(即不要从sorl文件夹运行python)。这将允许您直接导入缩略图。

您应该检查你的完整的Python路径(它将超过$ PYTHONPATH以上)从Python解释器内,以验证您的包位置:

>>> import sys 
>>> print sys.path 

这也可能有助于了解Python importing

+0

我有SORL目录和$ PYTHONPATH缩略图目录。这是我的$ PYTHONPATH的样子(我分隔为清晰起见,路径): 出口PYTHONPATH = $ PYTHONPATH: $ HOME/django_src: $ HOME/django_projects: $ HOME/django_projects/site_project/SORL: $ HOME/django_projects/site_project: $ HOME/django_projects/site_project/sorl/thumbnail – vector

+0

我能够从shell中导入_both_ sorl.thumbnail和缩略图 – vector

+0

这就是问题所在。您不希望缩略图位于PYTHONPATH上,只有根目录__sorl__。 –

0

问题已解决。

当遵循django书籍时,建议在项目目录中创建应用程序,并在INSTALLED APPS语句中引用这些应用程序,其路径从包含该项目的目录开始,例如'siteproject.books ”。我无法让django访问应用程序而没有将该目录名追加到文件路径,因此,例如,我无法简单地使用'书籍',而是需要在INSTALLED APPS语句中使用'siteproject.books' sorl.thumbnail就是这种情况,需要将其称为siteproject.sorl.thumbnail。其他尝试包括'索尔。缩略图'会产生一个非常丑陋的非格式化和令人困惑的紫色错误页面(是的,sorl目录在$ PYTHONPATH中,所以谁知道为什么这些尝试不起作用......)。

不幸的是,Django正在产生'未定义标记'错误,这是一个在许多情况下给出的广义错误。这并不意味着什么,对于查找问题没有用处。

当我打开sorl目录中的文件并编辑python文件时,问题就解决了。我找到了从sorl目录导入对象的导入语句,并将“siteproject。*”附加到这些路径,并且所有内容都开始工作。