在 conda yml 文件中使用 pip 要求文件会引发 AttributeError: 'FileNotFoundError'

我有一个 requirements.txt 喜欢

numpy

和一个 environment.yml 包含

# run via: conda env create --file environment.yml
---
name: test
dependencies:
  - python>=3
  - pip
  - pip:
      - -r file:requirements.txt

当我然后运行 ​​ conda env create --file environment.yml 我得到

pip 子进程输出:

Pip 子进程错误:错误:异常:

<... pip 中的错误回溯 >

AttributeError: 'FileNotFoundError' 对象没有属性 'read'

失败

CondaEnvException: Pip 失败

pip 的调用方式也很奇怪,正如在错误发生之前报告的那样:

['$HOME/.conda/envs/test/bin/python', '-m', 'pip', 'install', '-U', '-r', '$HOME/test/condaenv.8d3003nm.requirements.txt']

(我用 $HOME 替换了我的主路径)注意 requirements.txt 的奇怪扩展。

有任何想法吗?

stack overflow Using a pip requirements file in a conda yml file throws AttributeError: 'FileNotFoundError'
原文答案
author avatar

接受的答案

21.2.1中的PIP行为变化

A recent change in the Pip code 将其行为改变为 file: URI语法更加严格。 As pointed out 由PYPA成员和PIP开发人员,语法 file:requirements.txt 不是根据 the RFC8089 specification 的有效URI。

相反,一个人必须完全删除 file: 方案:

name: test
dependencies:
  - python>=3
  - pip
  - pip:
    - -r requirements.txt

或提供有效的URI,这意味着使用绝对路径(或本地文件服务器):

name: test
dependencies:
  - python>=3
  - pip
  - pip:
    - -r file:/full/path/to/requirements.txt
    # - -r file:///full/path/to/requirements.txt # alternate syntax

答案: