【问题标题】:ImportError: No module named 'django.core.urlresolvers'ImportError:没有名为“django.core.urlresolvers”的模块
【发布时间】:2017-08-25 15:08:41
【问题描述】:

我正在处理 Django 项目,我需要为输入创建一个表单。我尝试从django.core.urlresolvers 导入reverse。我收到一个错误:

line 2, in from django.core.urlresolvers import reverse ImportError: No module named 'django.core.urlresolvers'

我正在使用 Python 3.5.2、Django 2.0 和 MySQL。

【问题讨论】:

  • 看起来 django 没有安装在你的 PATH 上。

标签: python python-3.x django python-3.5 django-2.0


【解决方案1】:

Django 2.0 删除了 django.core.urlresolvers 模块,该模块在 1.10 版中移至 django.urls。您应该将任何导入更改为使用 django.urls,如下所示:

from django.urls import reverse

请注意,Django 2.0 删除了以前在 django.core.urlresolvers 中的一些功能,因此您可能需要在代码工作之前进行更多更改。有关这些额外更改的详细信息,请参阅features deprecated in 1.9

【讨论】:

  • 我在第三方模块中出现此错误:我该如何解决?我可以编辑模块,但是当我升级新的未更正版本时呢?是否可以覆盖?
  • 您可以更新并向第三方模块发送拉取请求
【解决方案2】:

如果要反向导入,从django.urls导入

from django.urls import reverse

【讨论】:

    【解决方案3】:

    您需要替换所有出现的:

    from django.core.urlresolvers import reverse

    到:

    from django.urls import reverse

    注意:这同样适用于 reverse_lazy

    在 Pycharm 中 Cmd+Shift+R 用于在 Path 中开始替换。

    【讨论】:

    • 我得到了同样的错误,尝试了这个,现在得到错误文件“C:\Users\displ\Code\.virtualenvs\dev\lib\site-packages\cms\utils\i18n.py”,第 4 行,在 from django.core.urlresolvers import get_resolver, LocaleRegexURLResolver ModuleNotFoundError: No module named 'django.core.urlresolvers',必须按照正确答案所说的替换所有引用。不过 Django 有点烂,很多东西从一开始就不起作用。
    【解决方案4】:

    对于那些可能正在尝试创建 Travis 构建的人,从 requirements.txt 文件安装 Django 的默认路径指向其 django_extensions 模块尚未更新的 repo。目前,唯一的解决方法是使用 pip 从主分支安装。那就是制作补丁的地方。但就目前而言,我们将不得不等待。

    你可以试试这个,它可能会有所帮助

    - pip install git+https://github.com/chibisov/drf-extensions.git@master

    - pip install git+https://github.com/django-extensions/django-extensions.git@master

    【讨论】:

      【解决方案5】:

      使用这个:

      from django.urls import reverse
      

      【讨论】:

        【解决方案6】:

        如果您在 TravisCI 上的构建由于此特定原因而失败,您可以通过更新 requirements.txt 中的 Django 扩展来解决问题

        pip install --upgrade django-extensions
        

        这将更新扩展以使用 Django 2+ 模块。

        【讨论】:

          【解决方案7】:

          urlresolver 已在更高版本的 Django 中被删除 - 请升级您的 django 安装。我使用以下命令修复了它。

          pip install django==2.0 --upgrade
          

          【讨论】:

            【解决方案8】:

            对于大于 2.0 的 django 版本使用:

            from django.urls import reverse
            

            在您的 models.py 文件中。

            【讨论】:

              【解决方案9】:

              要解决此问题,请将Django 降级到低于2.0. pip 的任何版本,安装Django==1.11.29

              【讨论】:

                【解决方案10】:

                就我而言,问题是我安装了过时的django-stronghold (0.2.9)。即使在我的代码中:

                from django.urls import reverse
                

                我仍然遇到错误。升级到django-stronghold==0.4.0后问题就消失了。

                【讨论】:

                  【解决方案11】:

                  使用 from django.urls import reverse 而不是 from django.core.urlresolvers import reverse

                  【讨论】:

                    【解决方案12】:

                    将 Django 1.9 (Python 2.7) 升级到 Django 3.2 (Python 3.9)

                    这可以通过一行 bash 替换来解决:

                    grep -ril "from django.core.urlresolvers" your_source_code_folder | xargs sed -i 's@from django.core.urlresolvers@from django.urls@g'
                    

                    【讨论】:

                      【解决方案13】:

                      我遇到了同样的问题,但 from django.urls import reverse 为我工作

                      【讨论】:

                      • 这已经在其他几个答案中提到了。在回答已经有答案的旧问题时,请确保您提供新颖的解决方案或比现有解决方案更好的解释答案。
                      猜你喜欢
                      • 2018-04-29
                      • 2013-03-11
                      • 2012-12-07
                      • 2012-05-23
                      • 2019-07-29
                      • 2015-07-04
                      • 2014-03-15
                      • 2017-12-29
                      相关资源
                      最近更新 更多