Использование файла требований к pip в файле conda yml вызывает ошибку атрибута: ‘FileNotFoundError’

#python #pip #conda

Вопрос:

У меня есть 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 >

Ошибка атрибута: объект «FileNotFoundError» не имеет атрибута «чтение».

провалившийся

Исключение CondaEnvException: Ошибка Pip

Также странно, как называется pip, как сообщалось непосредственно перед тем, как произошла ошибка:

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

(Я заменяю свой домашний путь на $HOME )
Обратите внимание на странное расширение requirements.txt .

Есть какие-нибудь идеи?

Комментарии:

1. Эта команда в конце является нормальной: Conda берет весь pip: раздел и переводит его во временный requirements.txt , а явный -r file:requirements.txt будет вложен в этот файл (см. Этот код ). Доступен ли каталог ( $HOME/test ) для записи? Т. е., возможно, у Conda возникли проблемы с созданием временного файла? Если вы просто сделаете - numpy это в pip: разделе » Работает ли это?»

2. @merv Да, $HOME/test доступен для записи. Да, замена -r file:requirements.txt на - numpy работает просто отлично.

Ответ №1:

Изменения в поведении Pip в 21.2.1

Недавнее изменение в коде Pip изменило его поведение, чтобы быть более строгим в отношении file: синтаксиса URI. Как указал член PyPA и разработчик Pip, синтаксис file:requirements.txt не является допустимым URI в соответствии со спецификацией RFC8089.

Вместо этого необходимо либо полностью отказаться от 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