Does Conda заменяет необходимость в virtualenv?
Недавно я обнаружил Conda после того, как у меня возникли проблемы с установкой SciPy, в частности, в приложении Heroku, которое я разрабатываю.
С Conda вы создаете среду, очень похожую на то, что делает virtualenv. Мои вопросы:
- Если я использую Conda, он заменит необходимость в virtualenv? Если нет, как мне использовать их вместе? Я устанавливаю virtualenv в Conda или Conda в virtualenv?
- Должен ли я использовать пипс? Если да, смогу ли я по-прежнему устанавливать пакеты с помощью пипа в изолированной среде?
Ответы
Ответ 1
-
Конда заменяет virtualenv. По-моему, это лучше. Он не ограничивается Python, но может использоваться и для других языков. По моему опыту он обеспечивает гораздо более плавный опыт, особенно для научных пакетов. Впервые я получил MayaVi, правильно установленный на Mac, с conda
.
-
Вы можете использовать pip
. Фактически, conda
устанавливает pip
в каждой новой среде. Он знает о установленных пакетах.
Например:
conda list
перечисляет все установленные пакеты в вашей текущей среде.
Пакеты, установленные Conda, выглядят следующим образом:
sphinx_rtd_theme 0.1.7 py35_0 defaults
и те, которые установлены через pip
следующим образом:
wxpython-common 3.0.0.0 <pip>
Ответ 2
Короткий ответ: вам нужна только Conda.
-
Conda эффективно объединяет функциональность pip и virtualenv в одном пакете, поэтому вам не нужно virtualenv, если вы используете conda.
-
Вы будете удивлены, сколько пакетов поддерживает conda. Если этого недостаточно, вы можете использовать pip под conda.
Вот ссылка на страницу conda, сравнивающую conda, pip и virtualenv:
https://docs.conda.io/projects/conda/en/latest/commands.html#conda-vs-pip-vs-virtualenv-commands.
Ответ 3
Виртуальные среды и pip
Я добавлю, что создавать и удалять среды conda с Anaconda просто.
> conda create --name <envname> python=<version> <optional dependencies>
> conda remove --name <envname> --all
В активированной среде установите пакеты через conda
или pip
:
(envname)> conda install <package>
(envname)> pip install <package>
Эти среды тесно связаны с управлением пакетами типа conda pip, поэтому легко создавать среды и устанавливать пакеты как Python, так и не Python.
Jupyter
Кроме того, установка ipykernel
в среде добавляет новый список в раскрывающемся меню Kernels для ноутбуков Jupyter, расширяя воспроизводимые среды для ноутбуков. Начиная с версии Anaconda 4.1, были добавлены nbextensions, облегчающие добавление расширений в ноутбуки.
надежность
По моему опыту, conda работает быстрее и надежнее при установке больших библиотек, таких как numpy
и pandas
. Более того, если вы хотите перенести свое сохраненное состояние среды, вы можете сделать это, поделившись или скопировав env.
Ответ 4
Установка Conda позволит вам создавать и удалять среды Python по своему усмотрению, предоставляя вам те же функциональные возможности, что и virtualenv.
В случае обоих дистрибутивов вы сможете создать изолированное дерево файловой системы, где вы сможете устанавливать и удалять пакеты python (возможно, с помощью pip) по своему желанию. Что может пригодиться, если вы хотите иметь разные версии одной и той же библиотеки для разных вариантов использования или просто хотите попробовать какой-нибудь дистрибутив и впоследствии удалить его, чтобы сэкономить место на диске.
Отличия:
Лицензионное соглашение. В то время как virtualenv распространяется под самой либеральной лицензией MIT, Conda использует лицензию BSD с 3 пунктами.
Конда предоставляет вам собственную систему управления пакетами. Эта система управления пакетами часто предоставляет предварительно скомпилированные версии (для большинства популярных систем) популярного не-Python программного обеспечения, что может облегчить работу некоторых пакетов машинного обучения. А именно, вам не нужно компилировать оптимизированный код C/C++ для вашей системы. Хотя это является большим облегчением для большинства из нас, это может повлиять на производительность таких библиотек.
В отличие от virtualenv, Conda дублирует некоторые системные библиотеки, по крайней мере, в системе Linux. Эти библиотеки могут потерять синхронизацию, что приведет к несогласованному поведению ваших программ.
Вердикт:
Конда великолепна и должна быть вашим выбором по умолчанию, когда вы начинаете свой путь с машинного обучения. Это сэкономит вам время, возиться с gcc и многочисленными пакетами. Тем не менее, Конда не заменяет virtualenv. Это вносит дополнительную сложность, которая не всегда желательна. Это идет под другой лицензией. Возможно, вы захотите избежать использования conda в распределенных средах или на оборудовании HPC.
Ответ 5
Еще одна новая опция и мой текущий предпочтительный метод настройки и запуска среды - это Pipenv
В настоящее время это официально рекомендуемый инструмент для упаковки Python от Python.org.
Ответ 6
Да, conda
намного проще в установке, чем virtualenv
, и в значительной степени заменяет последнюю.