【问题标题】:need help solving sorl-thumbnail error: "'thumbnail' is not a valid tag library:"需要帮助解决 sorl-thumbnail 错误:“'thumbnail' 不是有效的标签库:”
【发布时间】:2010-11-24 06:55:11
【问题描述】:

我一直在努力解决这个问题,我已经尝试了所有方法,但我没有任何想法。

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

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

这是我所做的设置,

  1. 下载最新的 sorl-thumbnail 并将其位置添加到 .bash_profile 中的 python 路径

  2. 在 INSTALLED_APPS 中包含“sorl.thumbnail”(在 django 的 settings.py 中)

  3. 在 django 模板中使用了 {% load thumbnail %} 标签

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

【问题讨论】:

    标签: django thumbnails sorl-thumbnail


    【解决方案1】:

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

    另外要检查的是在导入后打印模块名称:

    >>> import thumbnail
    >>> print thumbnail
    

    这将显示找到模块的文件系统位置,以防它从您不期望的地方加载另一个副本。

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

    您应该在 python 解释器中检查您的完整 Python 路径(它将超过 $PYTHONPATH)以验证您的包位置:

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

    了解更多关于Python importing的信息也可能会有所帮助

    【讨论】:

    • 我在 $PYTHONPATH 中有 sorl 目录和缩略图目录。这就是我的 $PYTHONPATH 的样子(为了清楚起见,我分隔了路径): export 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
    • 我可以从 shell 导入 both sorl.thumbnail 和 thumbnail
    • 这就是问题所在。您不希望缩略图位于 PYTHONPATH 上,而只位于根 sorl 目录中。
    • jdl2003,好的。我正在尝试更改 PYTHONPATH 以便只能直接导入 sorl 目录,但是,在更改我的 .bash_profile 之后,我仍然可以从 python shell 导入缩略图。这是在我的 .bash_profile 中: export PATH=$PATH:$HOME/django_src/django/bin export PYTHONPATH=$PYTHONPATH:$HOME/django_src:$HOME/django_projects:$HOME/django_projects/site_project 当我导入“缩略图”和然后打印 'thumbnail' 这是它显示的目录路径:
    • 抱歉,我上次的帖子不是很清楚。你似乎正朝着正确的方向前进。在运行 python 并检查导入之前,请确保您的工作目录不是 ../sorl/。我在上面添加了一些额外的测试。
    【解决方案2】:

    问题解决了。

    在学习 django 书籍时,建议在项目目录中创建应用程序,并在 INSTALLED APPS 语句中使用从包含项目的目录开始的路径来引用这些应用程序,例如,“siteproject.books” .如果不将该目录名称附加到文件路径,我就无法让 django 访问应用程序,因此,例如,我不能简单地使用“books”,而是需要在 INSTALLED APPS 语句中使用“siteproject.books” sorl.thumbnail 就是这种情况,需要将其称为 siteproject.sorl.thumbnail。包含“sorl.thumbnail”的其他尝试会产生一个非常难看的未格式化且令人困惑的紫色错误页面(是的,sorl 目录位于 $PYTHONPATH 中,所以谁知道为什么这些尝试不起作用......)。

    不幸的是,Django 产生了“未定义标签”错误,这是在许多情况下都会出现的普遍错误。它并没有真正的意义,也对定位问题没有用处。

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

    【讨论】:

      【解决方案3】:

      这是关于“无效标签库”消息无用的另一个一般提示:对于您创建的标签,它可能像语法错误一样简单。

      帽子提示:Django 用户的“摇滚”:http://groups.google.com/group/django-users/browse_thread/thread/d65db3940acf16c3?tvc=2

      【讨论】:

        猜你喜欢
        • 2011-09-05
        • 2011-07-29
        • 2014-12-21
        • 2010-12-13
        • 2011-12-20
        • 2011-05-20
        • 2012-04-21
        • 2012-06-12
        • 2017-08-04
        相关资源
        最近更新 更多