0

我对 Python (2.7) 和 Django (1.3.1) 还是很陌生,我不确定下一步应该在哪里调试这个问题。一点背景知识,这个应用程序在我的生产环境中运行得很好,该环境在运行 Ubuntu 的 EC2 实例上。我无法在运行 Mountain Lion 的开发机器上运行它。我遵循了看似标准的做法,并使用 virtualenv 将所有内容正确地沙盒化。

尝试渲染这条非常无害的线时发生错误:

<meta property="facebook:login_url" content="{% url socialauth_begin 'facebook' %}" />

抛出的异常:

Exception Value: Caught ImportError while rendering: cannot import name prepare_lookup_value
Exception Location: /dev/Sites/whattest/env/lib/python2.7/site-packages/grappelli/views/related.py in <module>, line 15

line 15: from django.contrib.admin.util import prepare_lookup_value

我认为这是某种路径问题,但此时我不知道在哪里/如何追踪它。

4

1 回答 1

2

当前版本的 django-grappelli 兼容 Django 1.4 和 1.5;所以我假设django.contrib.admin.util.prepare_lookup_value由 django-grapelli 导入的 Django 1.3 中根本不可用。

无论如何,我不明白为什么有人会用如此旧版本的 Django 开始新事物,除非是出于遗留原因。

更新:实际上,这个确切的问题似乎并非如此——<code>prepare_lookup_value 于 2011 年推出,1.3 于 2013 年发布,由git blame. 但是,该函数的位置已从 更改django.contrib.{util to utils},并且您的代码正在尝试导入django.contrib.admin.util.prepare_lookup_value

由于您似乎正在使用旧版本的(至少一些)软件包,我建议将 venv 中的所有软件包(包括 django-grapelli)升级到最新版本,看看问题是否仍然存在。

于 2013-10-01T08:40:25.683 回答