集成AzureSQL时遇Django版本依赖冲突,求解决方案
解决Django版本冲突与AzureSQL集成问题
核心思路:统一到长期支持的Django版本,匹配兼容的依赖包
Django 2.1.15已停止维护,存在安全隐患,且与你使用的djangorestframework、django-cors-headers新版本不兼容。同时AzureSQL完全支持Django 3.2 LTS(长期支持版本),所以优先将Django升级到3.2,再调整冲突依赖的版本:
- 调整依赖版本:创建或修改
requirements.txt,指定兼容的版本号:Django~=3.2.25 # 3.2系列最新LTS版本 djangorestframework~=3.14.0 # 支持Django 2.2-4.1,适配3.2 django-cors-headers~=3.13.0 # 支持Django 2.2-4.1,适配3.2 pyodbc>=4.0.39 # AzureSQL所需驱动 django-pyodbc-azure>=2.1.0.0 # 适配AzureSQL的Django数据库后端 - 用虚拟环境隔离依赖:避免全局环境混乱
- 创建虚拟环境:
python -m venv azure-sql-env - 激活环境:
- Windows:
azure-sql-env\Scripts\activate - Linux/macOS:
source azure-sql-env/bin/activate
- Windows:
- 安装依赖:
pip install -r requirements.txt
- 创建虚拟环境:
特殊情况处理:如果有依赖强制要求Django 2
如果确实有依赖包只能在Django 2下运行,先查这个包有没有更新版本支持高版本Django——要是没有,要么找替代包,要么接受安全风险继续用Django 2,但此时需要把冲突的依赖降级到支持Django 2.1的版本:
djangorestframework最高支持Django 2.1的版本是3.9.x,指定djangorestframework~=3.9.0django-cors-headers最高支持Django 2.1的版本是2.5.x,指定django-cors-headers~=2.5.0
你遇到的报错信息:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. djangorestframework 3.15.2 requires django>=4.2, but you have django 2.1.15 which is incompatible. django-cors-headers 4.4.0 requires django>=3.2, but you have django 2.1.15 which is incompatible.
内容的提问来源于stack exchange,提问作者Affi Amine
相关产品推荐
相关产品推荐

