使用 environment.yaml 在 conda 中使用 pip 将 pip 升级到最新版本

Upgrading pip to latest version using pip in conda using environment.yaml

我正在尝试使用 environment.yaml 创建一个环境,由于某种原因,conda 在我的环境中安装的默认 pip 需要很长时间来处理依赖项。

出于这个原因,我正在尝试以某种方式升级 conda 环境文件中的 pip 版本。

name: temp_env
channels:
  - pytorch
  - defaults
dependencies:
  - python=3.7
  - pytorch::pytorch=1.11.0
  - pytorch::torchvision=0.12.0
  - pytorch::cpuonly
  - pip
  - pip: 
      - -e '.[dev]'

本次安装自带的pip版本为pip 21.2.2。我正在尝试将 pip 升级到最新版本,目前是 22.0.4。我可以编写一个 bash 脚本来安装没有 pip 部分的 conda 环境,然后在其中安装包,但这不太理想。我正在尝试仅使用 YAML 文件提出解决方案。

我试过这个:

  - pip>=22.0.4
  - pip: 
      - -e '.[dev]'

但显然这个版本在 conda 的主要频道上还不存在。我也试过:

  - pip
  - pip:
    - -U pip
    - -e '.[dev]'

但这也不起作用并引发错误。

['/path/to/miniconda3/envs/temp_env/bin/python', '-m', 'pip', 'install', '-U', '-r', '/path/to/folder/condaenv.0kdmzdvh.requirements.txt']

Pip subprocess error: ERROR: Invalid requirement: "pip '-U'"

我相信你需要做 pip install -U 而不是 pip -U

conda-forge频道有。所以,

name: temp_env
channels:
  - pytorch
  - conda-forge
dependencies:
  - python=3.7
  - pytorch::pytorch=1.11.0
  - pytorch::torchvision=0.12.0
  - pytorch::cpuonly
  - pip>=22.0.4
  - pip: 
      - -e '.[dev]'

另外,从错误中可以看出,Conda在运行pip install命令时,已经添加了一个-U。但是,主要问题是升级 pip 然后使用升级后的 pip 将意味着 运行 两个连续的 pip install 命令,单靠 YAML 无法做到这一点. pip: 列表中的所有内容都被复制到 requirements.txt 并作为一个指令有效地传递给 pip install -U