我有一个Python软件包P
,它具有需求A
和需求B3.4
,但是A
具有需求B4.1
。但是,我知道P在某些情况下可以与B4.1
配合使用。我希望能够点安装安装软件包P
,并且仅在目标环境中找不到B3.4
的另一个版本时才安装B
。
我尝试了以下操作:
setuptools.command.install.install
继承以覆盖安装命令,如下所述:https://blog.niteo.co/setuptools-run-custom-code-in-setup-py/。我尝试在B
之前和之后检查并安装install.run
B
并添加B3.4
作为要求。事实证明,即使已安装B3.4
,也总是添加B4.1
。是否有任何原因可能导致它不起作用?我还有什么其他选择?
谢谢!
答案 0 :(得分:1)
我认为您没有任何 clean 解决方案,您将不得不使用一些技巧。
涉及在构建时进行动态检查的解决方案(即<View style={styles.contentContainer}>
<View style={styles.dateContainer}>
<Text style={styles.dateText}>a few seconds ago</Text>
</View>
<TouchableOpacity onPress={() => {}}>
<Text style={styles.item}>this is some text input</Text>
</TouchableOpacity>
</View>
const styles = StyleSheet.create({
contentContainer: {
flex: 1,
},
item: {
padding: 16,
fontWeight: 'bold',
borderColor: '#bbb',
borderWidth: 1,
borderStyle: 'solid',
borderRadius: 10,
},
dateContainer: {
flex: 1,
paddingHorizontal: 2,
marginTop: 16,
alignSelf: 'flex-end',
},
dateText: {
color: '#adadad',
},
});
中的代码)非常有限,因为一旦构建了轮子,它们就无法工作。
在运行时进行动态检查的解决方案不是最佳实践,并且存在很多问题(加载在进程中安装了模块的过程很棘手)
我现在想到的一种可能的解决方法是将setup.py
上的 P 的要求移到可选的依赖项( ),但它也有明显的局限性。只要在 P 的文档中对其进行了明确说明,并且明确说明了其副作用,我认为这是公平的游戏。