Совет по Conda от человека с `requirements.txt`.

Я requirements.txt (venv/pipenv) тип человека. У меня есть свои причины для этого, но я не буду упоминать эти причины здесь (ну, технически, проблемы, подобные описанной в этом посте, являются одной из этих причин).

В какой-то момент мне, наконец, понадобилось познакомиться с conda. Первый сюрприз: установка conda на linux не так проста, как sudo apt-get install ... или sudo pip install .... Вам нужно скачать программу установки на bash и запустить ее. Но меня это вполне устроило. После выбора некоторых опций установки и добавления conda в PATH (в руководстве по установке также не было сказано, что это нужно сделать [1][2]) я был готов к работе.

В репозитории проекта, над которым я хотел начать работать, у меня был файл environment.yml (который является эквивалентом requirements.py). Теперь наступает самая сложная часть:

В официальной документации сказано:

Создайте окружение из файла environment.yml:

conda env create -f environment.yml
Войти в полноэкранный режим Выйти из полноэкранного режима

Итак, я выполнил эту команду, но получил следующую ошибку:

CondaValueError: prefix already exists: /home/user/anaconda3
Войти в полноэкранный режим Выйти из полноэкранного режима

Это прискорбно. В любом случае, я погуглил об этой ошибке, и вот что я нашел:

Ошибка Conda: CondaValueError: префикс уже существует: /home/user/anaconda2

Короче говоря, если ваш файл .yml имеет пустое поле имени, вы должны явно указать имя окружения при создании окружения командой conda, вот так:

conda env create -f environment.yml -n environmentName
Вход в полноэкранный режим Выйти из полноэкранного режима

Я последовал этому совету, и мое окружение было успешно создано.


Подводя итог, скажу, что мой совет, как человека с requiements.txt, заключается в том, что conda менее «дружелюбна к пользователю» в том смысле, что вы должны лучше понимать, что происходит, в плане выполнения команд и именования окружений. Сравним это с поведением pipenv: по умолчанию pipenv создает каталог с вашим виртуальным окружением в ~/local/share/virtualenvs/, который состоит из имени каталога, где вы вызываете команду pipenv, и хэша. Таким образом, начальный уровень ниже, вы просто выполняете команду, и она работает, но затем вы должны знать, где находится среда (вы получаете эту информацию также в выходном журнале pipenv). Conda, с другой стороны, сложнее в использовании из-за более загадочной информации об ошибках и конвенций, которые нужно знать еще до выполнения команды.

Оцените статью
devanswers.ru
Добавить комментарий