导入错误:无法导入名称'ugettext_lazy'

30

我正在尝试安装suit,我输入了以下命令: pip install https://github.com/darklow/django-suit/tarball/v2 并写了这段代码:

from suit.apps import DjangoSuitConfig
class SuitConfig(DjangoSuitConfig) :
    layout = 'horizontal'

并添加了它:

INSTALLED_APPS = [
    'products.apps.SuitConfig',
     .....]

但是当我添加了最后一段代码后,出现了以下错误:

InvalidTemplateLibrary: 指定的模板库无效。尝试加载 'suit.templatetags.suit_menu' 时引发 ImportError:无法从 'django.utils.translation'(C:\Users\hp\environments\env3\lib\site-packages\django\utils\translation_init_.py)导入名称“ugettext_lazy”。

注意:Django版本为4.01。

8个回答

32
这个错误属于Django版本。如果你想使用Django 4.*,你需要找到:from django.utils.translation import ugettext_lazy as _ 并将其更改为:from django.utils.translation import gettext_lazy as _。祝编码愉快 :)

如果您因为使用ugettext而到达此处,而非ugettext_lazy,请将ugettext替换为gettext即可。 - Alexandro Nadal

11

我刚想问这个版本是什么,但是注意到注释(django 4.01)了。 'ugettext_lazy' 似乎也被你尝试使用的应用程序所使用。

'ugettext_lazy' 已在 Django 3+ 中弃用,因此您将无法在 Django 版本>= 3 中使用它。 https://code.djangoproject.com/ticket/30165


6
我将我的代码从:from django.utils.translation import ugettext_lazy as _ 改为了from django.utils.translation import gettext_lazy as _现在它完美运作。 - Isaac T

7

我在使用django-hitcount时也遇到了同样的问题。

views.py

from hitcount.views import HitCountDetailView

class PostDetailView(HitCountDetailView):
model = Post
template_name = 'blog/post.html'
slug_field = "slug"
count_hit = True

settings.py

INSTALLED_APPS = [
'hitcount',
 .....]

一个答案是 Django 4.0中已经移除了ugettext_lazy,请使用gettext_lazy替代 ""

from django.utils.translation import gettext_lazy as _

我将这行代码放在views.py文件中,结果得到了同样的错误。


你可能需要回到使用Django 3。 - Isaac T

2
如果您正在使用django 4.*版本,则必须在适用的导入语句中用"gettext_lazy"替换"ugettext_lazy"。在我的情况下,即使进行了此更改,我仍然遇到了"无法导入'ugettext_lazy'"的错误。我不得不将"django-rest-passwordreset"从版本1.1.0升级到1.2.1以解决此问题。请运行命令"pip3 install django-rest-passwordreset==1.2.1"。检查是否有类似上述的依赖库仍在使用已弃用的版本,然后将其升级。

如何查找依赖库,例如在这种情况下?谢谢! - undefined
还有像ungettext -> ngettext,upgettext -> pgettext等类似的东西。 - undefined

2
我强烈建议将 Django 从 "4.x.x" 降级到 "3.x.x" 以解决你的错误。
pip install django==3.*

由于Django 4.x.x非常新,因此一些包无法与Django 4.x.x兼容。所以,如果您继续使用Django 4.x.x,在不久的将来您将遇到相同或类似的错误,然后您将花费大量时间来解决这些错误,都是由于Django 4.x.x造成的。
实际上,我在使用"django-graphql-jwt""graphene-django"等时也遇到了相同或类似的错误。对于某些包,我能够解决这些错误,但对于另一些包,我能够解决某些错误,但却出现了新的其他错误,而我无法解决这些新的其他错误。
最后,我意识到由于Django 4.x.x,我花了很多时间来解决这些错误。所以,我再次强烈建议将Django"4.x.x"降级为"3.x.x"来解决您的错误。
pip install django==3.*

0
我通过将Django升级到4.2.3来解决了这个问题,现在它运行得非常完美。

0

我已经通过安装django==3.2版本来解决问题,而不是最新版本的Django。 但我仍会检查pypi更新以在最新版本的Django中使用。


-1

您必须像这样安装django-admin-honeypot库:

pip install django-admin-honeypot-updated-2021

这样问题就解决了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接