Файл экспорта среды Anaconda
Как сделать файл среды anaconda, который можно использовать на других компьютерах?
Я экспортировал мою среду python anaconda в YML, используя conda env export > environment.yml
. Экспортированный environment.yml
содержит эту строку prefix: /home/superdev/miniconda3/envs/juicyenv
, которая сопоставляется с моим местоположением anaconda, которое будет отличаться на других ПК.
Ответы
Ответ 1
Я не могу найти в спецификациях conda
ничего, что позволяло бы вам экспортировать файл среды без строки prefix: ...
. Однако, как отметил Алекс в комментариях, conda, похоже, не заботится о строке префикса при создании среды из файла.
Имея это в виду, если вы хотите, чтобы другой пользователь не знал ваш путь установки по умолчанию, вы можете удалить строку префикса с помощью grep
перед записью в environment.yml
.
conda env export | grep -v "^prefix: " > environment.yml
В любом случае другой пользователь запускает:
conda env create -f environment.yml
и среда будет установлена в путь по умолчанию для среды conda.
Если вы хотите указать путь установки, отличный от используемого по умолчанию для вашей системы (не связанный с 'prefix' в environment.yml), просто используйте флаг -p
, за которым следует требуемый путь.
conda env create -f environment.yml -p /home/user/anaconda3/envs/env_name
Обратите внимание, что Conda рекомендует создавать environment.yml
вручную, что особенно важно, если вы хотите поделиться своей средой на разных платформах (Windows/Linux/Mac). В этом случае вы можете просто пропустить строку prefix
.
Ответ 2
Самый простой способ сохранить пакеты из среды для установки на другом компьютере:
$ conda list -e > req.txt
тогда вы можете установить среду с помощью
$ conda create -n new environment --file req.txt
если вы используете pip
, используйте следующие команды: ссылка https://pip.pypa.io/en/stable/reference/pip_freeze/
$ env1/bin/pip freeze > requirements.txt
$ env2/bin/pip install -r requirements.txt
Ответ 3
Я считаю, что экспорт пакетов только в строковом формате является более переносимым, чем экспорт всей среды conda
. Как уже предлагал предыдущий ответ:
$ conda list -e > requirements.txt
Однако этот requirements.txt
содержит номера сборок, которые нельзя переносить между операционными системами, например между Mac
и Ubuntu
. В conda env export
у нас есть опция --no-builds
, но не с conda list -e
, поэтому мы можем удалить номер сборки, введя следующую команду:
$ sed -i -E "s/^(.*\=.*)(\=.*)/\1/" requirements.txt
И воссоздать среду на другом компьютере:
conda create -n recreated_env --file requirements.txt