将 Django 从 2.1 升级到 2.2.13 时如何修复 pyodbc 依赖错误?

Posted

技术标签:

【中文标题】将 Django 从 2.1 升级到 2.2.13 时如何修复 pyodbc 依赖错误?【英文标题】:How to fix pyodbc dependency errors when upgrade Django from 2.1 to 2.2.13? 【发布时间】:2020-07-09 05:29:46 【问题描述】:

由于版本 2.1 已被标记为不安全,我需要至少升级到 >=2.2。 Github 安全建议安装 2.2.13。我还需要安装仅适用于 Django >=2.2 的其他软件包。

Django 升级成功,但是当 pipenv 尝试锁定依赖项时,我收到此错误:

Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.

我用谷歌搜索了这个,我停止收到此错误的唯一方法是将这两个依赖项放在 [dev-packages] 下:

django-pyodbc-azure = "<2.1"
django-pyodbc = "<2.1"

但是当我尝试运行服务器时,我得到了这个:

ImproperlyConfigured("Django %d.%d.%d is not supported." % VERSION[:3])
django.core.exceptions.ImproperlyConfigured: Django 2.2.13 is not supported.

我也用谷歌搜索了这个,出现的解决方案是手动更改引发此错误的条件。我这样做了,然后我得到了另一个错误:

django.core.exceptions.ImproperlyConfigured: 'sql_server.pyodbc' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
    'mysql', 'oracle', 'postgresql', 'sqlite3'

我也用谷歌搜索了这个,但对其他人有用的解决方案对我不起作用。我已经被困在这一点好几天了。请发送帮助!

其他信息: 我正在使用这两个参数:

ENGINE':'sql_server.pyodbc'
'driver': 'ODBC Driver 17 for SQL Server'

注意:如果您知道我可以将这些包与更新版本的 Django 一起使用的另一种方式,请分享。

【问题讨论】:

【参考方案1】:

django-pyodbc-azure 不再维护,不幸的是。您可以使用一个新软件包作为替代品。它支持 Django 2.2 和 3.0。

https://pypi.org/project/django-mssql-backend/

我建议您完全删除对pyodbcdjango-pyodbcdjango-pyodbc-azure 的所有引用。然后更新您的依赖项(例如,在 Pipfilerequirements.txt 中)以添加:

django-mssql-backend==2.8.1
django>=2.2,<3

当您有机会确保没有django-pyodbc-azure 闲逛时,请在新的虚拟环境中尝试一下。如果您有任何进一步的问题,我们可以在 cmets 中解决它们并修改答案。我认为您不需要它,但我在这里提供了更深入的指南:https://www.pyphilly.org/django-and-sql-server-2020-edition/

【讨论】:

我知道这是旧的,但我只是按照这些说明进行操作,但仍然出现错误。有什么指导吗? @AlliDeacon 您能否开始一个新问题并包括以下版本:Django、django-mssql-backend、pyodbc,以及您正在使用的底层驱动程序(FreeTDS、MSODBC)以及什么操作系统(CentOS、Ubuntu、Windows、Mac)?然后在这里链接问题。我很乐意看看。

以上是关于将 Django 从 2.1 升级到 2.2.13 时如何修复 pyodbc 依赖错误?的主要内容,如果未能解决你的问题,请参考以下文章

升级到Django 2.1的urls.py路径中的语法错误

将 vuetify 从 1.5 升级到 2.1 时出错

将 jquery 版本从 2.1 升级到 3 后,淘汰验证自定义规则不起作用

从 2.1 升级到 2.2.4 后 Grails 自动编译中断

在 JBoss 5.1.1 上将 JSF 从 1.2 升级到 2.1

将 django 站点从 http 升级到 https 后,我不断收到“无效的 HTTP_HOST 标头”错误电子邮件