导入错误:无法导入名称“ugettext_lazy”

问题描述 投票:0回答:9

我正在尝试安装套装,我输入了以下命令: pip 安装 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”时引发导入错误:无法从“django.utils.translation”导入名称“ugettext_lazy”(C:\ Users \ hp nvironments nv3 \ lib \ site-packages \ django \ utils ranslation_ 初始化_.py)

注意:django 4.01

python python-3.x django django-settings installed-applications
9个回答
34
投票

此错误属于 Django 版本。如果你想使用 Django 4.* 你需要找到:

from django.utils.translation import ugettext_lazy as _

并更改为:

from django.utils.translation import gettext_lazy as _

快乐编码:)


11
投票

正想问版本,但注释(django 4.01)有帮助。 “ugettext_lazy”似乎也被您尝试使用的应用程序使用。

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


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

设置.py

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

一个答案是 ugettext_lazy 已在 Django 4.0 57 中删除。请改用 gettext_lazy ”“

from django.utils.translation import gettext_lazy as _

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


2
投票

如果您使用 django 4.* 版本,则必须在导入语句中将“ugettext_lazy”替换为“gettext_lazy”(如果适用)。

就我而言,即使在进行此更改之后,我仍收到错误“无法导入'ugettext_lazy'”。我必须将“django-rest-passwordreset”从版本 1.1.0 升级到 1.2.1 才能解决该问题。

pip3 安装 django-rest-passwordreset==1.2.1.

检查是否有任何与上述类似但仍使用已弃用版本的依赖库,然后升级它。


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==3.2 而不是最新版本的 Django 解决了这个问题。 但我仍然会检查 pypi 更新以了解最新版本 Django 中的用法。


0
投票

我通过将 Django 升级到 4.2.3 修复了这个问题,它运行得很好。


0
投票

错误:Django ImportError:无法从“django.utils.translation”导入名称“ugettext”

出现此问题的原因是 ugettext 别名在 Django 2.0 中已弃用,并在 Django 3.0 中完全删除。错误消息建议更改 import 语句以直接使用 gettext。

要解决此问题,您可以交换模块以覆盖导入。

在settings.py文件中,添加以下代码:

# settings.py
import django.utils.translation as original_translation

original_translation.ugettext = original_translation.gettext

此解决方法可确保在 Django 应用程序执行开始时将 ugettext 属性替换为 gettext 属性。


-1
投票

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

pip 安装 django-admin-honeypot-updated-2021

这样问题就解决了

© www.soinside.com 2019 - 2024. All rights reserved.