这不是问题的重复:
Import python packages with different versions installed
也无法通过virtualenv/pipenv解决该问题:共享相同名称/路径但具有不同代码/版本的包必须安装在同一环境下,程序才能正常运行
考虑到以下经典的钻石依赖问题:
假设我们对包“program”、“feature_A”和“feature_B”的源代码具有完全访问权限,并且feature_A和feature_B都具有以下代码:
import library.*
在像virtualenv、pip和conda这样的传统包管理器中,上述情况将阻止feature_a和feature_B在同一个项目中使用。但是由于python是一种解释性语言,我们可以使用feature_A和feature_B的源代码,因此应该可以做以下事情:
摄取library (v1.0)
和library (v2.0)
的包源/字节码,为每一个生成2个加密哈希,并将它们安装在依赖于它们各自哈希的2个不同路径下。
使用代码生成器重写feature_A
和feature_B
,以便它们从依赖加密哈希的新路径导入,并安装重写的版本。
使用代码生成器重写program
,以便它从安装重写的feature_A
和{
现在我的问题是:完全自动化这个过程有多困难?需要弱人工智能吗?或者可以用纯函数逻辑来实现?在
安装特定版本
pip允许您使用版本说明符指定要安装的包的哪个版本。例如,要安装请求的特定版本:
pip install requests==2.18.4
要安装最新的2.x版请求:
pip install requests>=2.0.0,<3.0.0
要安装包的预发布版本,请使用--pre标志:
pip install --pre requests
我自己还没有遇到过这种情况。我的建议是重命名这些库,以便它们以不同的名称安装。在我看来这是最简单的方法。在
我会在不同的
PYTHONPATH
中安装不同的包版本,例如或者
^{pr2}$对于要安装在另一个路径
insertherepath2
中的包的其他版本也是一样。在不同的PYTHONPATH
中的两个安装仍然可以访问python主路径中其他常见安装的包。在要使用
python
中的不同包:相当于使用另一个版本:
相关问题 更多 >
编程相关推荐