При установке пакетов в файле requirements.txt с помощью Conda с помощью следующей команды
conda install --yes --file requirements.txt
Если пакет в файле requirements.txt недоступен, возникает ошибка «Нет пакета», как показано ниже:
Использование сайта api Anaconda Cloud https://api.anaconda.org
Получение метаданных пакета: ....
Ошибка: пакеты не найдены в текущих совпадающих каналах linux-64: nimfa == 1.2.3
Вы можете найти этот пакет на anaconda.org с помощью
anaconda search -t conda nimfa ==1.2.3
Можно ли изменить это поведение вместо того, чтобы выдавать ошибку, чтобы он устанавливал все доступные пакеты в файле requirements.txt и выдавал предупреждение для тех, которые недоступны?
Я бы хотел этого, потому что пакет nimfa, о котором говорится в сообщении об ошибке, недоступен, можно установить с помощью пипса. Поэтому, если я могу изменить поведение, conda install --yes --file requirements.txt
чтобы просто выдавать предупреждение о недоступных пакетах, я могу отслеживать это с помощью команды pip install -r requirments.txt
в .travis.yml, чтобы TravisCI попытался установить его из любого места, где он доступен.
pip install
пакеты, которые недоступныconda install
, во время итерации?FOR /F "delims=~" %f in (requirements.txt) DO conda install --yes "%f" || pip install "%f"
работает очень хорошо. Благодарность!while read req; do if [[ $req != "#"* ]]; then conda install --yes $requirement || pip install $requirement; fi; done < requirements.txt
Вы можете сделать это, как указано в этом
Экспорт в файл .yml
Воспроизвести:
источник
Для тех, кто ищет, я использовал это как решение @TillHoffmann для раковины рыбы:
$ while read requirement; conda install --yes $requirement; end < requirements.txt
А также
$ while read requirement; conda install --yes $requirement;or pip install $requirement; end < requirements.txt
источник
Ответ Pbms здесь - правильный способ сделать это, если у вас есть существующая среда, которую нужно скопировать. Conda полностью способна устанавливать как пакеты Conda, так и пакеты pip, как указано в
environment.yml
. Я хотел более подробно задокументировать весь процесс. Обратите внимание, что я использую среду на основе папок, поэтому я добавил--prefix [path to environment folder]
в большинство команд.Допустим, вы установили среду для существующего проекта в папку с именем
env
в текущей папке, например:Вы бы создали
environment.yml
для этого проекта такую среду:Вы создадите новую среду в какой-то другой папке, скопировав
environment.yml
туда, а затем запустив это оттуда:Вы получите уже существующую среду для соответствия
environment.yml
, еще раз скопировавenvironment.yml
туда, а затем запустив это оттуда:Когда рассматриваемая среда активна, вы должны проверить состояние ее пакетов следующим образом:
Это сокращенная версия того, что может напечатать эта команда (обратите внимание, что пакеты pip отмечены
pypi
):# Name Version Build Channel pip 19.2.2 py37_0 python 3.7.4 h5263a28_0 numpy 1.16.4 py37h19fb1c0_0 pandas 0.25.1 py37ha925a31_0 pyodbc 4.0.27 py37ha925a31_0 ibm-db 3.0.1 pypi_0 pypi ibm-db-sa 0.3.5 pypi_0 pypi
Наконец, это сокращенная версия того, как
environment.yml
может выглядеть (обратите внимание, что пакеты pip перечислены в отдельной категории):dependencies: - pip=19.2.2=py37_0 - python=3.7.4=h5263a28_0 - numpy=1.16.4=py37h19fb1c0_0 - pandas=0.25.1=py37ha925a31_0 - pyodbc=4.0.27=py37ha925a31_0 - pip: - ibm-db==3.0.1 - ibm-db-sa==0.3.5
Имейте в виду, что совместное использование Conda и pip может вызвать некоторую изжогу, потому что они могут неосознанно уничтожить зависимости друг друга. Вы должны сначала установить все свои пакеты Conda, а затем все свои пакеты pip, а не чередовать их. Если ваша среда выходит из строя, официальная рекомендация - удалить и воссоздать ее (из вашего
environment.yml
файла). Для получения дополнительной информации см. Это руководство:https://www.anaconda.com/using-pip-in-a-conda-environment/
источник