我正在try 运行一个Django项目,我试图从guardian.shortcuts导入assign_permremove_perm(代码在这里列出:from guardian.shortcuts import assign_perm, remove_perm).

并收到一个错误: ModuleNotFoundError: No module named 'guardian.shortcuts'

我使用的是python3.8.9和django2.0.7.我已经成功地try 了安装守护者(0.2.2)和Django-Guardian(2.4.0),我可以成功地直接导入守护者.请帮我想一想.谢谢!

附注:我try 了print(guardian.__file__),结果如下:

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/guardian/__init__.py

推荐答案

ModuleNotFoundError,则当您的Python环境中未安装所需的程序包时,通常会出现此错误.

要解决此问题,请执行以下步骤:

  1. 验证您是否已安装Django Guardian: 运行以下命令以安装django-guardian程序包:

    pip install django-guardian
    

    确保您使用的是安装Django和其他包的同一个Python环境.

  2. 判断您的Python环境: 确保您使用的是安装了Django和Django Guardian的正确的Python环境.有时,如果您有多个Python环境或虚拟环境,您可能使用了错误的环境.您可以通过运行以下命令来判断当前的Python环境:

    python --version
    

    这应该会显示安装在您的环境中的Python版本.

  3. 查看Django Guardian版本: 确保您使用的是支持assign_permremove_perm功能的Django Guardian版本.过go ,assignremove_perm功能可用,但后来的版本用assignremove取代了它们.

    对于2.0.0及更高版本,请使用:

    from guardian.shortcuts import assign, remove
    

    对于2.0.0之前的版本,请使用:

    from guardian.shortcuts import assign_perm, remove_perm
    

    使用以下命令仔细判断您安装的版本:

    pip show django-guardian
    
  4. 重新启动您的应用程序: 在确保您已经安装了Django Guardian并使用了基于版本的正确导入之后,重新启动您的Django项目或服务器以应用更改.

如果您已经执行了这些步骤,但仍然遇到问题,请仔细判断您的Python环境和已安装的包,并确保使用的是正确的版本.

Django相关问答推荐

仅更新模型中的特定字段.Model Django

测试DRF中需要授权头

对象Django API中的对象

升级到4.2时,获取默认文件存储/存储是互斥的

Django mods.py我想要一个函数转到一个变量

django 无法识别实现自定义后端

如何自动删除 Django 模型中的字段值?

断开连接不会发生

Pytest-django - 测试创建和传递所需的用户对象

Django:使用相同的外键在不同的应用程序中 Select 多个列

Django 密码以什么格式存储在数据库中?

Django 相当于 COUNT 和 GROUP BY

重命名 django 元素的简单方法

Heroku - 在 Django 应用程序中处理静态文件

如何从 Django 的 TabularInline 管理视图中省略对象名称?

如何在 Django/Python 中减go 两个日期?

PyCharm 代码判断提示找不到模板文件,如何解决?

Django:根据自定义函数过滤查询

BASE DIR 的绝对路径是什么?

Django - 保存新对象时如何获取 self.id?