首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于idna版本冲突,Travis中的Pip需求安装失败

由于idna版本冲突,Travis中的Pip需求安装失败
EN

Stack Overflow用户
提问于 2021-03-04 21:28:30
回答 1查看 1.3K关注 0票数 1

我的一个Travis构建测试已开始失败,但有以下错误:

代码语言:javascript
复制
The conflict is caused by:
    The user requested idna==3.1
    requests 2.25.1 depends on idna<3 and >=2.5
To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

但是,这在我的本地机器上运行得很好。例如:

代码语言:javascript
复制
(venv) C:\Users\Asus\PycharmProjects\elastic-migrate>tox -e py38
GLOB sdist-make: C:\Users\Asus\PycharmProjects\elastic-migrate\setup.py
py38 create: C:\Users\Asus\PycharmProjects\elastic-migrate\.tox\py38
py38 installdeps: -rrequirements.txt
py38 inst: C:\Users\Asus\PycharmProjects\elastic-migrate\.tox\.tmp\package\1\elastic-migrate-0.1.0.dev126+g8e5eb23.zip
py38 installed: appdirs==1.4.4,atomicwrites==1.4.0,attrs==20.3.0,certifi==2020.12.5,cfgv==3.2.0,chardet==4.0.0,click==7.1.2,click-log==0.3.2,codecov==2.1.11,colorama==0.4.4,coverage==5.3.1,distlib==0.3.1,elastic-migrate @ file:///C:/Us
ers/Asus/PycharmProjects/elastic-migrate/.tox/.tmp/package/1/elastic-migrate-0.1.0.dev126%2Bg8e5eb23.zip,filelock==3.0.12,flake8==3.8.4,identify==1.5.10,idna==2.10,importlib-metadata==3.3.0,iniconfig==1.1.1,jsonschema==3.2.0,mccabe==0.
6.1,more-itertools==8.6.0,nodeenv==1.5.0,packaging==20.8,pluggy==0.13.1,pre-commit==2.9.3,py==1.10.0,pycodestyle==2.6.0,pyfakefs==4.3.3,pyflakes==2.2.0,pyparsing==2.4.7,pyrsistent==0.17.3,pytest==6.2.1,pytest-cov==2.10.1,pytest-mock==3
.4.0,PyYAML==5.3.1,requests==2.25.1,requests-mock==1.8.0,setuptools-scm==5.0.1,six==1.15.0,SQLAlchemy==1.3.22,toml==0.10.2,tox==3.20.1,urllib3==1.26.2,validator-collection==1.5.0,virtualenv==20.2.2,wcwidth==0.2.5,zipp==3.4.0
py38 run-test-pre: PYTHONHASHSEED='473'

供参考:

自从我尝试向项目添加python3.9支持之后,这种情况就开始发生了,皮拉普随后对依赖项进行了升级。当我对此进行了一些研究时,我发现还有一些人面临着同样的问题。然而,我无法找到一个令人满意的方法去做这件事。更好地处理tox环境依赖的推荐方法是什么?一个requirements.txt文件似乎不是正确的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-04 22:40:30

历史上,pip没有一个正确的依赖解决程序。因此,如果您要求它安装一个没有任何版本标志的包,那么您将得到该软件包的最新版本,即使它与您已经安装的其他软件包相冲突。

但是,对于pip 20.3,这种情况会发生变化,现在pip有了更严格的依赖解决程序。如果您的任何子依赖项不兼容,Pip现在会抱怨。

作为一个快速修复,您可以将您的idna版本插入您的requirements.txt2.05。作为一种长期解决方案,您可以采用像pip-工具这样的工具,在该工具中,您可以将顶级依赖项固定在requirements.in文件中,并运行pip-compile命令来生成requirements.txt文件。这样,高层依赖项和子依赖项之间将有一个明确的划分。此外,该工具将为您解决子依赖冲突。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66483306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档