Django报错ImportError: cannot import name ‘ugettext_lazy‘ from ‘django.utils.translation‘

问题描述

博主从GitHub上拉取下了一个Django项目,该项目依赖环境为Django==2.2.6版本,而博主本地Anaconda3环境下的Django==4.1.3版本,在终端输入python manage.py runserver启动项目后,提示错误:ImportError: cannot import name ‘ugettext_lazy’ from ‘django.utils.translation’ (D:\ProgramData\Anaconda3\lib\site-packages\django\utils\translation_init_.py)

from django.utils.translation import ugettext_lazy as _
ImportError: cannot import name 'ugettext_lazy' from 'django.utils.translation' (D:\ProgramData\Anaconda3\lib\site-packages\django\utils\translation\__init__.py)

在这里插入图片描述

原因分析

ugettext_lazy”已被 Django 3+ 弃用,因此您将无法将其与 Django 版本 >= 3 一起使用 https://code.djangoproject.com/ticket/30165

Along the lines of #27753 (Cleanups when no supported version of Django supports Python 2 anymore), the legacy functions in -- , , , , and -- are simple aliases that remain for Python 2 Unicode backwards compatibility. As other compatibility layers have been cleaned up, these shims can be deprecated for removal.django.utils.translationugettext()ugettext_lazy()ugettext_noop()ungettext()ungettext_lazy()

解决方法

方法1

降低Django版本为Django==2.2.6

pip install Django==2.2.6 -i https://pypi.tuna.tsinghua.edu.cn/simple/

方法2

I believe you are using Django 4. ugettext_lazy has been removed in Django 4.0 415. Please use gettext_lazy instead:

# from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _

在这里插入图片描述

解决以上错误后,还会提示其他ImportError如:

错误1:ImportError: cannot import name ‘force_unicode’ from ‘django.utils.encoding’ (D:\ProgramData\Anaconda3\lib\site-packages\django\utils\encoding.py)

# from django.utils.encoding import force_unicode as force_text  # noqa
from django.utils.encoding import force_str as force_text  # noqa

错误2:ImportError: cannot import name ‘ungettext’ from ‘django.utils.translation’ (D:\ProgramData\Anaconda3\lib\site-packages\django\utils\translation_init_.py)

# from django.utils.translation import ungettext, ugettext as _
from django.utils.translation import gettext_lazy, gettext_lazy as _

错误3:ImportError: cannot import name ‘render_to_response’ from ‘django.shortcuts’ (D:\ProgramData\Anaconda3\lib\site-packages\django\shortcuts.py)

# from django.shortcuts import render_to_response
from django.shortcuts import render

最后成功启动项目,问题解决

在这里插入图片描述

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cdtaogang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值