从项目上部署文件,报错: File "<frozen importlib._bootstrap>", line 1206, in _gcd_import File "<frozen importlib._bootstrap>", line 1178, in _find_and_load File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 940, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "D:\PYTHON3.11.2\Lib\site-packages\password_reset\urls.py", line 4, in <module> from . import views File "D:\PYTHON3.11.2\Lib\site-packages\password_reset\views.py", line 18, in <module> from .forms import PasswordRecoveryForm, PasswordResetForm File "D:\PYTHON3.11.2\Lib\site-packages\password_reset\forms.py", line 5, in <module> from django.utils.translation import ugettext_lazy as _ ImportError: cannot import name 'ugettext_lazy' from 'django.utils.translation' (D:\PYTHON3.11.2\Lib\site-packages\django\utils\translation\__init__.py)
错误提示表明 password_reset
包中尝试导入 ugettext_lazy
失败。自 Django 4.0 起,ugettext_lazy
已被移除,因此需要更新代码以使用新的 gettext_lazy
。
以下是常规解决方案步骤:
1. 检查 Django 版本
确认项目使用的 Django 版本。运行以下命令查看:
python -m django --version
如果版本是 4.0 或更高,说明需要修改代码。
2. 修复 password_reset
包的问题
进入文件路径 D:\PYTHON3.11.2\Lib\site-packages\password_reset\forms.py
,找到以下代码:
from django.utils.translation import ugettext_lazy as _
将其修改为:
from django.utils.translation import gettext_lazy as _
如果项目中的其他地方也使用了 ugettext_lazy
,需要一并修改。
3. 然后重新测试。
00.我的方法是:由于我频繁的使用命令pip install django导致每次执行一次命令都会在已存在的情况下就会更新到最新版本,我的版本已经>=4.0了; 最简单的一部步直接版本安装兼容版本。
如果你无法修改 password_reset
包的代码,可以尝试安装一个与 Django 4.0 兼容的 password_reset
版本,或者降级 Django:
pip install django==3.2
然后重新测试服务器是否正常启动。
我重新安装django后整个项目就可以运行了,因为一直就是这个包import失败。