Как разрешить конфликты в экспортированной среде conda из macOS при установке на linux? - PullRequest
3 голосов
/ 07 августа 2020

У меня есть environment.yaml, который я использую для воссоздания сред conda следующим образом:

conda env create -p /home/chris/moneybox/env --file /home/chris/moneybox/environment.lock.yaml --force

На macOS это работает нормально, на linux не работает после 30+ минут конфликта, но результат, по крайней мере, для меня непонятен, и я не могу понять, что мне нужно изменить.

Я представил результат как суть . Я не могу понять это, и хотя я отправил conda issue , чтобы попытаться улучшить это, сможет ли кто-нибудь сказать мне, что на самом деле здесь конфликтует, и какие изменения мне нужно внести на environment.lock.yaml, чтобы исправить?

1 Ответ

2 голосов
/ 08 августа 2020

Требования к пакетам для macOS и linux не всегда одинаковы. И даже при полном совпадении требований набор доступных версий не всегда идентичен. (Может быть, conda-forge содержит foobar-1.2.3 для linux, но foobar-1.2.4 для macOS.)

По этим причинам обычно невозможно экспортировать большой список пакетов среды из macOS и ожидать, что он работать на linux или наоборот (по крайней мере, по моему опыту). Когда среда становится достаточно большой, становится высокой вероятность того, что требования хотя бы одного пакета не могут быть удовлетворены.

Следовательно, вам необходимо поддерживать два разных файла environment.lock.yaml для macOS и для linux. Поскольку вы начинаете с файла, который работает в macOS, одна простая вещь, которую можно попробовать, - просто отбросить версии патчей со всеми требованиями и посмотреть, сможет ли conda с этим работать.

Итак, я попробовал это в вашем файле. Это сработало довольно быстро. (Я добавлю новый файл блокировки как комментарий к вашей сути .) По общему признанию, это не идеально - почти половина пакетов оказалась с немного другой версией. Вам нужно будет протестировать среду, чтобы убедиться, что она по-прежнему соответствует вашим потребностям.

Если вы действительно хотите, чтобы две среды максимально соответствовали друг другу, вы можете попробовать перебрать различия и восстановить их по очереди. время, пока вы не столкнетесь с ошибкой. Но это похоже на большие проблемы, чем того стоит. Может быть, лучшая стратегия - просто просмотреть различия и посмотреть, выделяется ли какое-либо из них для вас. Вы знаете свой вариант использования; возможно, есть один или два пакета, к которым вам нужно быть очень разборчивым, поэтому выберите эти версии вручную, а остальные оставьте в покое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...