簡體   English   中英

由於 idna 版本沖突,Pip 要求在 Travis 中安裝失敗

[英]Pip requirements installation fails in Travis due to idna version conflict

我的 Travis 構建測試之一已開始失敗,並出現以下錯誤:

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

但是,這在我的本地機器上運行良好。 例如:

(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'

以供參考:

自從我嘗試向項目添加 python 3.9 支持以來,這種情況就開始發生了, pyup隨后升級了依賴項。 當我深入研究它時,我發現還有其他人面臨同樣的問題 但是,我無法找到令人滿意的方法來 go 關於它。 更好地處理毒性環境依賴關系的推薦方法是什么? 一個requirements.txt文件似乎不是正確的方法。

從歷史上看, pip沒有適當的依賴關系解析器。 因此,如果您要求它安裝沒有任何版本標志的 package,您將獲得最新版本的 package,即使它與您已經安裝的其他軟件包沖突。

但是,隨着pip 20.3 ,這種情況發生了變化,現在pip具有更嚴格的依賴關系解析器。 如果您的任何子依賴項不兼容,Pip 現在會抱怨。

作為快速修復,您可以將您的idna版本在您的requirements.txt中固定到2.05 作為長期解決方案,您可以采用像pip-tools這樣的工具,您可以在其中將頂級依賴項固定在requirements.in文件中,並運行pip-compile命令來生成requirements.txt文件。 這樣,頂級依賴項和子依賴項之間就會有明確的划分。 此外,該工具將為您解決子依賴沖突。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM