【问题标题】:Django Rest Framework -- no module named rest_frameworkDjango Rest Framework -- 没有名为 rest_framework 的模块
【发布时间】:2016-01-23 08:53:11
【问题描述】:

我已经使用pip install djangorestframework 安装了 django rest 框架,但是当我运行“python3 manage.py sycndb”时仍然出现此错误:

ImportError: 没有名为“rest_framework”的模块

我正在使用 python3,这是我的问题吗?

【问题讨论】:

  • 你安装在settings.py吗?
  • @BurgerKing 我将 rest_framework 添加到我安装的应用程序中。你是这个意思吗?
  • 您使用的是美德环境吗?
  • 我只是尝试猜测原因。你能给出你的错误信息吗?
  • @Vingtoft 我不是。我正在关注本教程:youtube.com/watch?v=VZ8NIoLN-yQ 在 5 分钟标记处。

标签: python django python-3.x pip django-rest-framework


【解决方案1】:

您需要使用 pip3 (pip for python 3) 安装 django rest 框架:

pip3 install djangorestframework

pip3的安装说明见here

【讨论】:

  • 我不知道为什么,但我仍然面临同样的问题
  • 这解决了我的问题。就我而言,我已经在 windows powershell 中完成了codepip install djangorestframeworkcode
  • 如果 pip3 不起作用,请尝试:python3 -m pip install djangorestframework
  • 而不是指出显而易见的答案(“安装 django,duh”)检查 INSTALLED_APPS 列表中没有缺少逗号,因为这会奇怪地触发此 ImportError。 Kudos to this answer.
  • @alexlomba87,如果您使用 python3 但已使用 pip for python 2.7 安装了 django,也会出现此错误,这就是为什么这个答案对许多开发人员来说并不明显。
【解决方案2】:

如果你忘记了,,就会发生这种情况,很奇怪

错误示例:需要,

INSTALLED_APPS = [
'rest_framework'
'django.contrib.contenttypes',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

【讨论】:

  • 很高兴我向下滚动尝试重新安装 DRF。这为我解决了。
【解决方案3】:

另外,检查是否存在微小的错字

它是rest_framework,中间有一个下划线 (_)!

我花了一段时间才发现我使用的是 dash... ?

【讨论】:

  • 我同意这种鬼鬼祟祟的事情。
  • 感谢您提及错字。我使用rest_framwork 而不是rest_frameworkframework 中缺少 e。 :)
  • 在这里,我试图找到我需要执行什么样的黑暗艺术才能完成这项工作,而这一切都是一个该死的错字!谢谢!
【解决方案4】:

如果您使用某种虚拟环境,请执行此操作!

  1. 从您的虚拟环境中退出。

  2. 激活您的虚拟环境。

完成此操作后,您可以尝试再次运行您的命令,这次它可能不会有任何 ImportErrors。

【讨论】:

    【解决方案5】:

    也许你安装的 DRF 是针对 python2 的,而不是针对 python3 的。

    您可以使用python console 来检查您的模块:

    import rest_framework
    

    其实你使用pip安装模块,它会安装python2模块。

    你应该为 python3 安装 pip:

    sudo apt-get install python3-setuptools
    sudo easy_install3 pip
    

    所以,你可以安装python3模块了。

    【讨论】:

    • 我明白你的意思。当我尝试运行您的命令时,我收到一个错误:“apt-get: command not found”。
    【解决方案6】:

    在没有全局安装 django-rest-framework 的情况下使用像 virtualenv 这样的虚拟环境时,您可能会遇到错误。 解决方案是:

    • 首先使用{{your environment name}}/bin/activate for Linux 或{{your environment name}}/Scripts/activate for Windows 激活环境

    • 然后再次运行命令。

    【讨论】:

    • 谢谢,我在没有激活虚拟环境的情况下执行迁移命令,我也尝试通过激活虚拟环境,但我在虚拟环境之外执行
    【解决方案7】:

    如果您正在使用 PyCharm,我发现在我的 INSTALLED_APPS 添加“rest_framework”后重新启动程序并关闭所有提示对我有用。

    【讨论】:

    • 这为我解决了,它是 VS 代码,所以如果遵循一些教程可以先试试这个
    【解决方案8】:

    对我来说,它也是 python 版本...
    更好地使用 pipenv ...
    使用 python 3 创建一个虚拟环境 ...

    安装 pipenv : pip3 install pipenv
    创建虚拟环境:pipenv --python 3
    激活虚拟环境:pipenv shell

    【讨论】:

      【解决方案9】:

      如果您使用 pipenv

      如果您通过新的 pipenv 安装了 rest_framework, 您需要通过虚拟环境运行它:

      1.pipenv 外壳

      2.(env) 现在,运行你的命令(例如 python manage.py runserver)

      【讨论】:

        【解决方案10】:

        首先在系统上全局安装框架解决了我的问题。

        machine@debian:/$ sudo pip install djangorestframework
        or;
        root@debian:/# pip install djangorestframework
        

        【讨论】:

          【解决方案11】:

          我遇到了同样的问题,按照这些说明操作,它对我有用:

          1. python -m pip install --upgrade pip(升级 pip)
          2. pip3 install djangorestframework
          3. 添加rest_framework 作为第一个应用程序:

            INSTALLED_APPS = [
                'rest_framework',
                'django.contrib.admin',
                'django.contrib.auth',
                'django.contrib.contenttypes',
                'django.contrib.sessions',
                'django.contrib.messages',
                'django.contrib.staticfiles',
                #apps
                'apps.endpoints',
            ]
            

          【讨论】:

          • 为什么需要把第一个应用告诉我?
          【解决方案12】:
          INSTALLED_APPS = [
          'rest_framework',
          'django.contrib.admin',
          'django.contrib.auth',
          'django.contrib.contenttypes',
          'django.contrib.sessions',
          'django.contrib.messages',
          'django.contrib.staticfiles',
          #apps
          'apps.endpoints',
          

          ]

          可能忘记了逗号“,”或者在粘贴包装名称时可能有额外的空格“packagename”检查

          【讨论】:

            【解决方案13】:

            另外,如果您在运行 docker-compose up 时遇到此错误。确保运行docker-compose up --build,因为 docker 还需要安装 djangorestframework 依赖项。

            【讨论】:

              【解决方案14】:

              如果您使用的是 JWT pip install djangorestframework-jwt,请尝试此操作

              【讨论】:

                【解决方案15】:

                就我而言,我的问题有所不同。我在我的 bash_profile 中创建了一个别名,例如:

                alias python=/usr/local/bin/python3
                

                即使我激活了我的环境,当我运行命令时,访问的 python 解释器是来自系统而不是来自我的环境。

                我刚刚从 bash_profile 中删除了别名,它工作正常。

                【讨论】:

                【解决方案16】:

                (我假设使用容器的人知道他们在做什么,但这是我的两分钱)

                假设您使用 cookiecutter-django 设置项目并启用 docker 容器支持,请务必使用 djangorestframework==<x.yy.z>(或您尝试安装的任何 python 依赖项)更新 pip 要求文件并重新构建 docker图片(本地和生产)。

                【讨论】:

                  【解决方案17】:

                  我知道这个问题有一个公认的答案以及许多其他答案,但我只是想添加另一个发生在我身上的案例是将 django 和 django rest 框架更新到最新版本,以使它们在没有任何问题的情况下正常工作错误。

                  因此,您只需使用以下命令卸载 django 和 django rest 框架:

                  pip uninstall djangopip uninstall djangorestframework

                  然后使用以下命令再次安装:

                  pip install djangopip install djangorestframework

                  【讨论】:

                    【解决方案18】:

                    我最近安装了最新的 Django 3.1 和 Django Rest Framework 3.11.1 库,但最终意识到截至 2020 年 4 月 11 日,DRF 不支持 Django 3.1。我没有意识到需要使用提到的确切版本。

                    如果您因为无法理解 DRF 不导入的原因而烦恼,请检查这些 requirements 并确保您的应用兼容。

                    【讨论】:

                      【解决方案19】:

                      在我的例子中,我已经将它安装在 virtualenv 中,但是在运行命令时忘记激活 virtualenv

                       python3 manage.py makemigrations 
                      

                      所以在我的情况下,我只需要激活环境,然后运行命令

                      source [virtualenv folder-name]/bin/activate
                      python3 manage.py makemigrations
                      

                      这解决了我的问题。

                      【讨论】:

                        【解决方案20】:

                        使用 pip 安装程序单独安装缺少的模块

                        pip3 install djangorestframework-jsonapi
                        

                        这对我有用。

                        【讨论】:

                          【解决方案21】:

                          我面临同样的问题。就我而言,我通过更新 Windows Defender 配置解决了这个问题。

                          【讨论】:

                            【解决方案22】:

                            激活整个虚拟环境

                            cd django_apps
                            source /root/django-apps/env/bin/activate
                            

                            【讨论】:

                              【解决方案23】:

                              在我的虚拟环境中使用 python3/pip3 安装必要的软件包后,一切都归结为使用 python manage.py runserver 而不是 python3 manage.py runserver 运行我的服务器。这是因为虚拟环境和其他软件包是使用 python3/pip3 而不是 python2/pip2 安装的,因此再次使用 python3 运行服务器会导致错误。相信这会对其他人有所帮助。

                              【讨论】:

                                【解决方案24】:

                                先安装pip3 install djangorestframework 并在 settings.py 中添加 rest_framework。 这就是我提出问题的方式。

                                【讨论】:

                                  【解决方案25】:

                                  在 Windows 上,使用 PowerShell,我必须关闭并重新打开控制台,然后响应虚拟环境。

                                  【讨论】:

                                    【解决方案26】:

                                    要安装它,请执行以下操作:

                                    pip install djangorestframework
                                    pip install markdown     
                                    pip install django-filter
                                    

                                    我们必须检查一些常见的错误:

                                    1. 检查已安装列表元素的逗号

                                    2. 拼写错误

                                    【讨论】:

                                      【解决方案27】:

                                      如果您遇到以下错误,请尝试按给出的图标:

                                      “ModuleNotFoundError: 没有名为‘rest_framework’的模块”

                                      它会要求你导入给定的包,即rest_framework,然后再次运行代码。

                                      这对我有用,并尝试解决该错误几天。

                                      【讨论】:

                                      • 不是每个人都使用相同的编辑器,也不是所有的编辑器都提供相同的功能来通过灯泡导入模块。
                                      猜你喜欢
                                      • 2020-07-29
                                      • 1970-01-01
                                      • 2018-05-25
                                      • 1970-01-01
                                      • 2020-10-10
                                      • 2017-02-04
                                      • 2022-01-23
                                      • 1970-01-01
                                      • 2018-09-04
                                      相关资源
                                      最近更新 更多