ImportError: No module named 'django.core.urlresolvers'
ImportError: No module named 'django.core.urlresolvers'
我正在处理 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 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。
如果要反向导入,请从django.urls
导入
from django.urls import reverse
您需要替换所有出现的:
from django.core.urlresolvers import reverse
至:
from django.urls import reverse
注意:同样适用于reverse_lazy
in Pycharm Cmd+Shift+R 开始替换in路径。
对于那些可能试图创建 Travis 构建的人来说,从 requirements.txt
文件安装 Django 的默认路径指向一个 django_extensions
模块尚未更新的仓库。目前唯一的解决方法是使用 pip 从 master 分支安装。这就是制作补丁的地方。但是现在,我们必须等待。
你可以同时试试这个,它可能会有帮助
- pip install git+https://github.com/chibisov/drf-extensions.git@master
- pip install git+https://github.com/django-extensions/django-extensions.git@master
如果您在 TravisCI 上的构建由于这个特殊原因而失败,您可以通过更新 requirements.txt
中的 Django 扩展来解决问题
pip install --upgrade django-extensions
这将更新扩展以使用 Django 2+ 模块。
urlresolver 已在更高版本的 Django 中删除 - 请升级您的 django 安装。我使用以下命令修复了它。
pip install django==2.0 --upgrade
对于大于 2.0 的 django 版本使用:
from django.urls import reverse
在您的 models.py 文件中。
要解决此问题,您可以将 Django
降级到任何低于 2.0.
pip
的版本,安装 Django==1.11.29
.
就我而言,问题是我安装了过时的 django-stronghold
(0.2.9)。即使在我的代码中:
from django.urls import reverse
我仍然遇到错误。在我将版本升级到 django-stronghold==0.4.0
之后,问题就消失了。
使用 from django.urls import reverse 而不是 from django.core.urlresolvers import reverse
正在将 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'
我正在处理 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 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。
如果要反向导入,请从django.urls
from django.urls import reverse
您需要替换所有出现的:
from django.core.urlresolvers import reverse
至:
from django.urls import reverse
注意:同样适用于reverse_lazy
in Pycharm Cmd+Shift+R 开始替换in路径。
对于那些可能试图创建 Travis 构建的人来说,从 requirements.txt
文件安装 Django 的默认路径指向一个 django_extensions
模块尚未更新的仓库。目前唯一的解决方法是使用 pip 从 master 分支安装。这就是制作补丁的地方。但是现在,我们必须等待。
你可以同时试试这个,它可能会有帮助
- pip install git+https://github.com/chibisov/drf-extensions.git@master
- pip install git+https://github.com/django-extensions/django-extensions.git@master
如果您在 TravisCI 上的构建由于这个特殊原因而失败,您可以通过更新 requirements.txt
中的 Django 扩展来解决问题pip install --upgrade django-extensions
这将更新扩展以使用 Django 2+ 模块。
urlresolver 已在更高版本的 Django 中删除 - 请升级您的 django 安装。我使用以下命令修复了它。
pip install django==2.0 --upgrade
对于大于 2.0 的 django 版本使用:
from django.urls import reverse
在您的 models.py 文件中。
要解决此问题,您可以将 Django
降级到任何低于 2.0.
pip
的版本,安装 Django==1.11.29
.
就我而言,问题是我安装了过时的 django-stronghold
(0.2.9)。即使在我的代码中:
from django.urls import reverse
我仍然遇到错误。在我将版本升级到 django-stronghold==0.4.0
之后,问题就消失了。
使用 from django.urls import reverse 而不是 from django.core.urlresolvers import reverse
正在将 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'