我可以声明不兼容的 python 依赖项吗?

Can I declare incompatible python dependencies?

我想知道如果存在特定版本的模块但不使该模块本身成为依赖项,我是否可以声明包将不起作用。

例如,作为软件包发布者,我发现 python 中 foo==1.2.3 的存在破坏了某些密钥,即使我个人并不使用它。

有没有办法声明不兼容,这样如果检测到此模块,我的包将无法安装?

我知道我可以在运行时通过尝试导入它来动态测试它,但我更感兴趣的是它是否可以在包元数据中声明,比如反依赖(或负依赖)

显然没有声明性的方式来执行此操作,不建议在 setup.py 中执行此操作,因为不能保证安装时 运行。

此外,即使可能,也不会阻止用户以后安装不兼容的包。

这意味着唯一可靠的方法是添加 运行时间检查。对于 cli 工具,它应该很容易,对于库来说,它可能很棘手,因为它可能会对导入产生很小的性能影响。