我有以下问题:
我想通过conda安装的一个包需要另一个包的特定版本。但是,我想安装第二个软件包的更新版本。
具体来说,包energysim 2.1.5
需要包fmpy 0.2.14
,当我试图安装更新版本的fmpy
时,我遇到错误:
ERROR: energysim 2.1.5 has requirement fmpy==0.2.14, but you'll have fmpy 0.3.0 which is incompatible.
有可能发生这样的事情吗?
在我的回答中,我假设以下情况:
- 您想要安装packageA,它需要packageB==v1
- 您还希望安装版本为v2的软件包B
您的目标:安装版本为v1和v2的软件包B,使成为可能
我不知道有什么办法可以做到这一点。我也不认为这在技术上可行。假设您在代码中执行import packageB
。应该导入哪个版本?python怎么知道packageA完成的import packageB
应该是v1,而您完成的import packageB
应该是v2?
我看到这些选项:
- 不使用packageA,这样您就可以拥有所需版本的packageB
- 如果可能的话,有一个包A和包B的环境,另一个只包含所需版本的包B
- 分叉packageA并创建自己的自定义版本,该版本可与所需的packageB版本一起使用
难道你就不能做到:
conda install packageB==2.0.0
conda install packageA
包energysim
被固定[1]以使用fmpy
0.2.14,没有其他版本(旧版本或更新版本(。看起来这是有意为之[2];维护人员可能有充分的理由强制使用这个pin。pip
不会因为这个引脚而让你安装0.3。
我会通过GitHub问题联系他们,询问他们的软件包是否与新版本兼容。看起来fmpy
0.2.14大约有一年半的历史了。它可能与0.3.x配合使用,但IMHO应在使用前进行测试并发布。
- https://github.com/dgusain1/energysim/blob/07282257073058119664f9a5e8fd4300e138a64d/setup.py#L25-L29
- https://github.com/dgusain1/energysim/commit/f84dad3ab913b43eea3187da54c132319c23d1a7