virtualenv 里已经安装了某 a 库 1.0 版本,结果在安装某 b 库时依赖 a 的版本是 2.0。
手动安装 a 2.0 可能造成老代码出错,不安装 a 2.0 可能 b 库会出错。这个情况要怎么解决的?
手动安装 a 2.0 可能造成老代码出错,不安装 a 2.0 可能 b 库会出错。这个情况要怎么解决的?
1
CEBBCAT Mar 20, 2020 via Android
anaconda virtualenv pyenv 都可以吧,发帖前记得先搜索一下
|
2
superrichman Mar 20, 2020 via iPhone 你已经是虚拟环境了,那就只能改代码,要么换 c 库代替 b 库
|
4
loading Mar 20, 2020 via Android
如果必须同时跑,要么找旧版 b,要么改代码
|
5
lgh Mar 20, 2020 via iPhone
Pipenv 能分析出这种冲突,但是巨慢。
而且解决办法也只能像楼上说的,b 降版本或找别的库代替或自己撸一个或把老代码用到 a 的地方改成 2.0 版本的写法 |
7
frostming Mar 20, 2020
@CEBBCAT 你需要一个带依赖解析功能的工具,众所周知 pip 是没有这个东西(但正在做了)
除了前面有人提到的 pipenv, 还有 pip-tools, poetry 我自己也写了个基于 PEP 582 的 pdm - https://github.com/frostming/pdm |
9
ipwx Mar 20, 2020
其实,无论哪个语言的包管理器,都不能自动帮你解决这一问题。
你必须自己去把你的两个依赖修改到匹配为止。 |
10
magicdawn Mar 20, 2020 via iPhone node_modules 那种模式的好处体现了
|
11
Trim21 Mar 20, 2020 via Android
poetry,限制一下 a 的最高版本,然后让它自动处理就好了。
当然如果你的 a 库写依赖的时候只写了 b 的最低版本限制没写最高版本限制还是死翘翘… |
12
ClericPy Mar 20, 2020
遇到过一次... 魔改了最小的那个库, 后来还是有问题, 直接弃用这种不更新的库了...
|
13
a132811 Mar 30, 2020
|