python - 使用 2 `requirements.txt` 时如何防止 conda 更新包
问题描述
语境
我必须从 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
然后在启动最后一个命令时将其更新到 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
。有没有人知道如何实现这一目标?
当然,我可以install
在这个特定的 MWE 中颠倒命令的顺序,但它不能解决具有 2 个具有不同但兼容规范的需求文件的一般问题。
解决方案
推荐阅读
- java - 在我将设置活动连接到我的 Activity2 后,我的应用程序崩溃了
- javascript - 创建 CSS 选框 CSS/HTML/JS
- javascript - 功能单独工作但不能组合在一起
- android - 将 Android Studio 升级到 gradle 版本 5.6.4 时出错
- latex - 如何防止浮动在段落和对齐之间移动?
- erlang - 为什么 Ejabberd 处理 PUT 和 POST 请求的方式不同?
- python - Pandas 数据透视表边距返回 TypeError
- r - 在R中为零值绘制白色
- c# - 获取两个字符串之间的值?
- database - 什么时候应该使用 Redis 作为主数据库和弹性搜索