背景
我需要从Gitlab安装两个软件包(由于版权限制,这些软件包不在任何conda
或pip
渠道上可用)。第一个软件包的要求如下:
numpy>=1.16,<1.17
第二个状态的要求只是:
numpy
以下是我所做的简化 MWE:
conda create -n test2
conda activate test2
conda install "numpy>=1.16,<1.17"
conda install --freeze-installed numpy
结果
在执行最后一个命令时,Conda首先安装了一个版本为1.16.*的numpy
,然后想要将其更新至1.18版本。
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /home/user/miniconda3/envs/test2
added / updated specs:
- numpy
The following packages will be downloaded:
package | build
---------------------------|-----------------
numpy-1.18.5 | py38h8854b6b_0 5.2 MB conda-forge
------------------------------------------------------------
Total: 5.2 MB
The following packages will be UPDATED:
numpy 1.16.5-py38h95a1406_0 --> 1.18.5-py38h8854b6b_0
Proceed ([y]/n)? n
期望行为
当我安装两个包时,我希望最终只安装 numpy=1.16.*
。
问题
--freeze-installed
选项似乎只适用于依赖项。我没有找到类似的选项,可以在新要求不与已安装版本冲突时,不更新主包。类似于 --no-update
。有人有关于如何实现这一目标的想法吗?
当然,我可以倒转这个 MWE 中 install
命令的顺序,但这并不能解决具有不同但兼容规范的两个需求文件的普遍问题。
conda install
进行安装吗?如果是这样,你可以添加任意数量的软件包,conda 将尝试找出一种有效的解决方法。conda install numpy "numpy>=1.16,<1.17"
将安装 numpy=1.16.x。如果你有多个文件,你可以多次传递--file=
参数。 - celrequirements.txt
文件合并在一起,因此我正在编写一个脚本来完成这个任务。由于requirements.txt
可能会随着时间而发生变化,所以我不能只手动执行一次。 - Dr_Zaszuś