Django项目导入guardian.shortcuts遇ModuleNotFoundError求助
解决ModuleNotFoundError: No module named 'guardian.shortcuts'问题
问题根源
你安装的guardian(0.2.2)是非常老旧的版本,该版本不存在guardian.shortcuts模块;而django-guardian(2.4.0)是适配现代Django的正确版本,但你的Python环境中旧版本guardian的优先级更高,导致实际导入的是旧包而非新版django-guardian。
解决方案
- 彻底卸载旧版本guardian
执行命令:pip uninstall -y guardian - 安装适配Django2.0.7的django-guardian版本
Django2.0.x兼容的django-guardian推荐选2.3.0版本(2.4.0也可兼容,若出现问题可回退到2.3.0),执行:pip install django-guardian==2.3.0 - 验证安装结果
进入Python交互环境,执行以下代码确认:import guardian print(guardian.__version__) # 应输出2.3.0或你安装的兼容版本 print(guardian.__file__) # 路径需指向django-guardian的安装目录 from guardian.shortcuts import assign_perm, remove_perm # 此时应能成功导入 - 配置Django项目
在项目settings.py的INSTALLED_APPS中添加:INSTALLED_APPS = [ # ... 其他已配置应用 'guardian', ]
额外说明
- 旧版
guardian与新版django-guardian是同一项目的不同命名阶段,当前官方包名为django-guardian,禁止同时安装两个版本,否则会引发包冲突。 - Django2.0.7属于老旧版本,安装依赖时需明确选择兼容该版本的包,避免出现未知兼容性问题。
内容的提问来源于stack exchange,提问作者RA.IBOY
相关产品推荐
相关产品推荐

