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.

  1. Conda эффективно объединяет функциональность pip и virtualenv в одном пакете, поэтому вам не нужно virtualenv, если вы используете conda.

  2. Вы будете удивлены, сколько пакетов поддерживает 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, и в значительной степени заменяет последнюю.