install_requires 层次结构:ContextualVersionConflict

问题描述

假设我有一个 main_package

在它的 setup.cfg 中有:

install_requires = 

     importlib_Metadata; python_version < "3.8"

     not_main_package>= 15.1

我还有一个 not_main_package 16.0

在它的 setup.cfg 中有:


install_requires =

     importlib_Metadata >= 3.6

我愿意:

$ pip install importlib_Metadata==1.5.0
$ install main_package

我收到一个错误

pkg_resources.ContextualVersionConflict: (importlib-Metadata 1.5.0 (/usr/local/lib/python3.7/site-packages),Requirement.parse('importlib-Metadata>=3.6'),{'not_main_package'})

我说得对吗,父级 (main_package) install_requires 的优先级更高,会忽略子级 (not_main_package) install_requires,从而导致 ContextualVersionConflict ?

解决方法

您应该手动安装所需版本的 importlib_metadata