导入错误:找不到名为'django.core.urlresolvers'的模块

250

我正在开发一个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。


1
看起来 Django 没有安装在你的 PATH 上。 - Håken Lid
12个回答

491

Django 2.0移除了django.core.urlresolvers模块,并将其从1.10版本中移动到django.urls。您应该更改任何导入以使用django.urls,像这样:

from django.urls import reverse

请注意,Django 2.0删除了一些之前在django.core.urlresolvers中的功能,因此您可能需要进行更多的更改,以使您的代码正常工作。有关这些附加更改的详细信息,请参见1.9版本中已弃用的功能


2
我在一个第三方模块中遇到了这个错误:我该如何解决?我可以编辑该模块,但是当我升级到一个未经修正的新版本时怎么办?是否可能进行覆盖? - fabio
你可以更新并向第三方模块发送一个拉取请求。 - Gajit

68

如果想要导入reverse,就需要从django.urls中进行导入。

from django.urls import reverse

31

您需要替换所有出现的:

from django.core.urlresolvers import reverse

为:

from django.urls import reverse

enter image description here

注意:对于reverse_lazy同样适用

在Pycharm中使用 Cmd+Shift+R 来启动路径替换。


我遇到了同样的错误,尝试了正确答案并出现了以下错误:File "C:\ Users \ displ \ Code \ .virtualenvs \ dev \ lib \ site-packages \ cms \ utils \ i18n.py",第4行,在<module>中 从django.core.urlresolvers导入get_resolver,LocaleRegexURLResolver ModuleNotFoundError:没有名为'django.core.urlresolvers'的模块,必须执行正确答案所说的替换所有引用操作。不过,Django有点烂,很多东西一开始就无法工作。 - Rich Bianco

8

使用 from django.urls import reverse 替代 from django.core.urlresolvers import reverse


3
对于那些试图创建Travis Build的人,从requirements.txt文件中安装Django的默认路径指向一个库,该库的django_extensions模块尚未更新。目前唯一的解决方法是使用pip从主分支安装。这就是补丁的位置。但现在,我们必须等待。
与此同时,您可以尝试以下内容,这可能会有所帮助:
- - pip install git+https://github.com/chibisov/drf-extensions.git@master - - pip install git+https://github.com/django-extensions/django-extensions.git@master

3

对于大于2.0版本的Django,请使用以下内容:

from django.urls import reverse

在你的models.py文件中。


2

将 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'

2

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

最初的回答:

pip install django==2.0 --upgrade

1
如果您在TravisCI上的构建因为这个特定的原因失败了,您可以通过更新requirements.txt中的Django扩展来解决问题。
pip install --upgrade django-extensions

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

1
为了解决这个问题,您需要将 Django 版本降级到小于 2.0 的任何版本。使用以下命令: pip install Django==1.11.29

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接