使用 2`requirements.txt` 时如何防止 conda 更新包
How to prevent conda updating packages when using 2 `requirements.txt`
上下文
我必须从 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 首先安装 numpy
的 1.16.* 版本,然后要将其更新到 v.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
命令的顺序,但它不能解决具有 2 个不同但兼容规范的需求文件的一般问题。
当您将所有要求传递给单个 conda install
命令而不是两个后续调用时,conda 的求解器将尝试一次满足所有依赖项。这将为您提供预期的结果,即依赖项 numpy>=1.16,<1.17
和 numpy
被解析为 1.16.x
版本的 numpy。
当您处理多个需求文件时,您可以pass the --file
argument multiple times一次性提供所有依赖项。
上下文
我必须从 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 首先安装 numpy
的 1.16.* 版本,然后要将其更新到 v.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
命令的顺序,但它不能解决具有 2 个不同但兼容规范的需求文件的一般问题。
当您将所有要求传递给单个 conda install
命令而不是两个后续调用时,conda 的求解器将尝试一次满足所有依赖项。这将为您提供预期的结果,即依赖项 numpy>=1.16,<1.17
和 numpy
被解析为 1.16.x
版本的 numpy。
当您处理多个需求文件时,您可以pass the --file
argument multiple times一次性提供所有依赖项。