Python Django项目依赖冲突及pip安装报错问题求助
问题描述
1. 初始依赖冲突报错
执行依赖安装时触发版本冲突:
ERROR: Cannot install -r requirements.txt (line 10), -r requirements.txt (line 15), intriniorealtime==2.2.0 and requests==2.20.0 because these package versions have conflicting dependencies. The conflict is caused by: The user requested requests==2.20.0 coreapi 2.3.3 depends on requests django-allauth 0.40.0 depends on requests intriniorealtime 2.2.0 depends on requests==2.19.1
2. 尝试修复后出现的pip报错
尝试移除intrinio相关包、放宽requests版本限制、升级intrinio版本等操作后,均触发以下提示:
ERROR: To modify pip, please run the following command: C:\Users\jaina\AppData\Local\Programs\Python\Python38\python.exe -m pip install -r requirements.txt
项目的requirements.txt内容如下:
amqp ==2.5.2 anyjson ==0.3.3 astroid ==2.4.2 billiard ==3.6.1.0 celery ==4.4.0 certifi ==2019.9.11 cffi ==1.14.0 chardet ==3.0.4 colorama ==0.4.3 coreapi ==2.3.3 coreschema ==0.0.4 cryptography ==2.8 defusedxml ==0.6.0 Django ==2.2.6 django-allauth ==0.40.0 django-appconf ==1.0.6 django-base-url ==2019.7.24 django-compat ==1.0.15 django-cors-headers ==3.7.0 django-crispy-forms ==1.7.2 django-crontab ==0.7.1 django-cryptography ==1.1 django-markdown-deux ==1.0.5 django-pagedown ==0.1.1 django-rest-auth ==0.9.5 django-rest-passwordreset ==1.0.0 django-rest-swagger ==2.2.0 django-timezone-field ==4.0 django-unique-slugify ==1.1 djangorestframework ==3.9.4 djangorestframework-jwt ==1.8.0 future ==0.18.2 idna ==2.7 importlib-metadata ==1.3.0 intrinio-sdk ==5.0.1 intriniorealtime ==2.2.0 isort ==4.3.21 itypes ==1.1.0 Jinja2 ==2.10.3 kombu ==4.6.7 lazy-object-proxy ==1.4.3 markdown2 ==2.3.8 MarkupSafe ==1.1.1 mccabe ==0.6.1 more-itertools ==8.0.2 mysqlclient ==1.4.6 numpy ==1.18.1 oauthlib ==3.1.0 openapi-codec ==1.3.2 packaging ==19.2 pandas ==1.0.2 paypalrestsdk ==1.13.1 Pillow ==7.0.0 pip ==19.2.3 pycparser ==2.19 pyfcm ==1.4.7 PyJWT ==1.4.0 pylint ==2.5.3 pyOpenSSL ==19.1.0 pyparsing ==2.4.2 python-crontab ==2.4.0 python-dateutil ==2.8.1 python-http-client ==3.2.7 python3-openid ==3.1.0 pytz ==2019.3 redis ==3.3.11 requests ==2.20.0 requests-oauthlib ==1.2.0 schedule ==0.6.0 sendgrid ==6.2.2 setuptools ==41.2.0 simplejson ==3.16.0 six ==1.12.0 sqlparse ==0.3.0 stripe ==2.44.0 toml ==0.10.1 uritemplate ==3.0.0 urllib3 ==1.23 vine ==1.3.0 websocket-client ==0.48.0 whitenoise ==5.0.1 wrapt ==1.12.1 zipp ==0.6.0
解决方案
1. 先修复pip执行报错
报错提示要求用python -m pip执行安装,这是因为直接调用pip可能指向其他环境的版本,必须使用对应Python解释器的-m pip确保环境一致。执行以下命令:
C:\Users\jaina\AppData\Local\Programs\Python\Python38\python.exe -m pip install -r requirements.txt
后续所有pip操作都要使用该完整路径的命令,避免环境混淆。
2. 解决核心依赖冲突
针对requests和intriniorealtime的版本冲突,提供三种可行方案:
方案A:调整requests版本适配intriniorealtime
修改requirements.txt中的requests行,将requests==2.20.0改为requests==2.19.1。coreapi 2.3.3、django-allauth 0.40.0均无严格requests版本限制,兼容2.19.1版本。修改后重新执行安装命令。方案B:升级intriniorealtime到兼容高版本requests的版本
查询intriniorealtime的版本历史,将intriniorealtime==2.2.0改为支持requests>=2.20的版本(例如intriniorealtime>=3.0.0,需确认实际兼容版本),再执行安装。方案C:移除intriniorealtime(非必需时)
直接删除requirements.txt中的intriniorealtime==2.2.0行,若业务不需要intrinio-sdk,也可删除intrinio-sdk==5.0.1,然后执行安装。
3. 优化requirements.txt(可选)
为避免后续冲突,建议:
- 仅对核心依赖(如Django、celery)保留严格版本限制,其他依赖放宽范围(如用
>=或仅写包名)。 - 移除
pip==19.2.3和setuptools==41.2.0,包管理工具无需固定版本,固定反而易引发环境冲突。
内容的提问来源于stack exchange,提问作者Krattza

