python - 将 Django 从 2.1 升级到 2.2.13 时如何修复 pyodbc 依赖错误?
问题描述
由于版本 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 一起使用的另一种方式,请分享。
解决方案
django-pyodbc-azure
不幸的是,不再维护。您可以使用一个新软件包作为替代品。它支持 Django 2.2 和 3.0。
https://pypi.org/project/django-mssql-backend/
我建议您完全删除对pyodbc
、django-pyodbc
和的所有引用django-pyodbc-azure
。然后更新您的依赖项(例如,在 aPipfile
或中requirements.txt
)以添加:
django-mssql-backend==2.8.1
django>=2.2,<3
当您有机会确保您没有django-pyodbc-azure
闲逛时,请在新的虚拟环境中尝试一下。如果您有任何进一步的问题,我们可以在评论中解决它们并修改答案。我认为您不需要它,但我在这里提供了更深入的指南:https ://www.pyphilly.org/django-and-sql-server-2020-edition/
推荐阅读
- python - 如何以矢量化方式将矩形边界转换为数组切片?
- c# - 策略以及如何在 .net core 3.0 中间件中创建请求和响应管道
- angularjs - 如何异步调用 Square API 方法
- java - Java - 超类的 instanceof
- c# - 使用 WebMethod 返回带有 Message 的警报框
- rasa-core - 从 Rasa 操作中获取先前的意图名称?
- javascript - 在两个php页面之间传递变量的最佳方法
- c - 结构零初始化方法
- css - 响应式菜单和滑块高度问题
- postgresql - 如何使用sails waterline 将数组插入到postgresql 表中?