簡體   English   中英

pip 無法正確解決子/孫依賴項

[英]pip not properly resolving child/grandchild dependencies

我有一個像這樣工作的模塊依賴樹(→ 表示依賴):

a → b, c
b → ruamel.yaml >= 0.16.5
c → ruamel.yaml < 0.16.6, >=0.12.4

我很清楚 ruamel.yaml 0.16.5將正確解決這兩個依賴項。 但是,當我pip install a ,我得到以下日志:

Collecting ruamel.yaml>=0.16.5
  Downloading ruamel.yaml-0.16.10-py2.py3-none-any.whl (111 kB)

然后后來:

ERROR: <package c> 0.4.0 has requirement ruamel.yaml<0.16.6,>=0.12.4, but you'll have ruamel-yaml 0.16.10 which is incompatible.

所以 pip 在選擇安裝哪些包時完全忽略了孫子依賴。 但它意識到它最終搞砸了。 為什么 pip 沒有在這里選擇正確的包。 有沒有辦法幫助它更好地工作?

我相信這是目前正在解決的一個眾所周知的問題。 一周前的消息: http : //pyfound.blogspot.com/2020/03/new-pip-resolver-to-roll-out-this-year.html

同時,可以采取一些措施來嘗試緩解此類問題:

  • 恢復依賴關系的順序(在您的示例中a可以在b之前列出c
  • 使用額外的requirements.txtconstraints.txt文件
  • 根據實際需要,替代工具可能會有所幫助(我相信詩歌pipenv和很可能其他工具也可能有更好的依賴解析器,但它們不是pip的一對一替代)

今天似乎已經可以測試pip未來的依賴解析器了:

  • 從源安裝pip
  • 運行path/to/python -m pip install --unstable-feature=resolver ...

在某種程度上,似乎也可以通過pip check命令在當前版本或pip 中測試此依賴項解析器。

關於該主題的更多參考資料:

暫無
暫無

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

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