我想知道是否可以声明如果某个模块的特定版本存在但不使该模块本身具有依赖性,则该软件包将无法工作。
例如,作为软件包发行商,我发现python中foo==1.2.3
的存在破坏了某些键,即使我个人自己不使用它也是如此。
是否有一种方法声明不兼容,因此如果检测到此模块,我的软件包将无法安装?
我知道我可以通过尝试导入它来在运行时进行动态测试,但是我更感兴趣是否可以在包元数据中声明它,例如反依赖性(或负依赖性)
答案 0 :(得分:1)
显然,没有声明的方法可以执行此操作,因此不建议在setup.py中执行此操作,因为不能保证在安装时运行。
即使有可能,它也不会阻止用户以后安装不兼容的软件包。
这意味着唯一可靠的方法是添加运行时检查。对于cli工具来说,它应该很容易,对于库来说,应该很容易,否则它可能会很棘手,因为这可能会对导入造成小的性能影响。