#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