簡體   English   中英

pip 抱怨依賴版本,但無論如何都會安裝它們。 為什么?

[英]pip complains about dependency versions but installs them anyway. Why?

我有一個這樣定義的需求文件:

requirements.txt

botocore==1.15.11
docutils==0.16

當我點擊pip install -r requirements.txt我看到這個錯誤:

botocore 1.15.11 has requirement docutils<0.16,>=0.10, but you'll have docutils 0.16 which is incompatible.

但是,當我點擊pip list時,我將其視為 output:

botocore        1.15.11
docutils        0.16   
jmespath        0.10.0 
pip             18.1   
python-dateutil 2.8.1  
setuptools      40.6.2 
six             1.15.0 
urllib3         1.25.9 
wheel           0.34.2 

這表明這兩個依賴項是按照 requirements.txt 文件中的定義安裝的。 如果沒有問題,為什么還要抱怨呢? 如果有問題,它們是如何安裝的?

pip當前的依賴求解器存在一些眾所周知的問題(限制和錯誤)。 一個新的(更好的)正在進行中。 它已經可以測試了。 此答案及其鏈接中的更多詳細信息: https://stackoverflow.com/a/60926641/11138259

話雖如此,這兩個要求是不相容的:

  • botocore==1.15.11
  • docutils==0.16

從 botocore 1.15.11setup.cfg中可以看出:

[bdist_wheel]
universal = 1

[metadata]
requires-dist =
    python-dateutil>=2.1,<3.0.0
    jmespath>=0.7.1,<1.0.0
    docutils>=0.10,<0.16
    urllib3>=1.20,<1.25.8; python_version=='3.4'
    urllib3>=1.20,<1.26; python_version!='3.4'

無論如何,仍然可以指示pip安裝這樣的組合(被宣傳為不兼容的組合)。 並且pip將警告此沖突,正如您在問題中所示,或者通過運行pip check (順便說一下,據我所知,截至今天,它已經使用了較新的依賴解決方案):

$ pip check
botocore 1.15.11 has requirement docutils<0.16,>=0.10, but you have docutils 0.16.

不過,導入和執行的代碼可能仍然可以正常工作,而不會出現任何(明顯)問題。 例如:可能botocore 1.15.11實際上與docutils 0.16並不完全不兼容。 要么觸發問題的代碼路徑沒有命中,要么限制docutils<0.16只是作為預防措施。

暫無
暫無

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

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