Недавно я обнаружил Conda после того, как у меня возникли проблемы с установкой SciPy, особенно в приложении Heroku, которое я разрабатываю.
С Conda вы создаете среду, очень похожую на ту, что делает virtualenv . Мои вопросы:
- Если я использую Conda, это заменит потребность в virtualenv? Если нет, то как мне использовать два вместе? Нужно ли устанавливать virtualenv в Conda или Conda в virtualenv?
- Мне все еще нужно использовать пипс? Если да, смогу ли я устанавливать пакеты с pip в изолированной среде?
Ответы:
Конда заменяет virtualenv. На мой взгляд, это лучше. Он не ограничивается Python, но может использоваться и для других языков. По моему опыту, это обеспечивает гораздо более плавный опыт, особенно для научных пакетов. Первый раз, когда я правильно установил MayaVi на Mac, был с
conda
.Вы все еще можете использовать
pip
. Фактическиconda
устанавливаетсяpip
в каждой новой среде. Он знает о pip-установленных пакетах.Например:
перечисляет все установленные пакеты в вашей текущей среде. Установленные Conda пакеты выглядят так:
и те, которые установлены через
pip
имеют<pip>
маркер:источник
<pip>
показывает , что она была установлена с ПУМ в противном случае он устанавливается с Конда.Короткий ответ: вам нужна только 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 .
источник
Виртуальные среды и
pip
Я добавлю, что создавать и удалять среды conda с Anaconda просто.
В активированной среде установите пакеты через
conda
илиpip
:Эти среды тесно связаны с управлением пакетами в виде пипы в conda , поэтому создавать среды и устанавливать пакеты как Python, так и не-Python просто.
Jupyter
Кроме того, установка
ipykernel
в среде добавляет новый список в раскрывающемся меню Kernels ноутбуков Jupyter, расширяя воспроизводимые среды для ноутбуков. Начиная с версии Anaconda 4.1, были добавлены nbextensions , облегчающие добавление расширений в ноутбуки.надежность
По моему опыту, conda быстрее и надежнее при установке больших библиотек, таких как
numpy
иpandas
. Более того, если вы хотите перенести свое сохраненное состояние среды, вы можете сделать это, поделившись или скопировав env.источник
Установка Conda позволит вам создавать и удалять среды Python по своему усмотрению, предоставляя вам те же функциональные возможности, что и virtualenv .
В случае обоих дистрибутивов вы сможете создать изолированное дерево файловой системы, где вы сможете устанавливать и удалять пакеты python (возможно, с помощью pip) по своему желанию. Что может пригодиться, если вы хотите иметь разные версии одной и той же библиотеки для разных вариантов использования или просто хотите попробовать какой-нибудь дистрибутив и впоследствии удалить его, чтобы сэкономить место на диске.
Отличия:
Лицензионное соглашение. В то время как virtualenv распространяется под самой либеральной лицензией MIT , Conda использует лицензию BSD с 3 пунктами.
Конда предоставляет вам собственную систему управления пакетами. Эта система управления пакетами часто предоставляет предварительно скомпилированные версии (для большинства популярных систем) популярного не-Python программного обеспечения, что может облегчить работу некоторых пакетов машинного обучения. А именно, вам не нужно компилировать оптимизированный код C / C ++ для вашей системы. Хотя это является большим облегчением для большинства из нас, это может повлиять на производительность таких библиотек.
В отличие от virtualenv, Conda дублирует некоторые системные библиотеки, по крайней мере, в системе Linux. Эти библиотеки могут потерять синхронизацию, что приведет к несогласованному поведению ваших программ.
Вердикт:
Конда великолепна и должна быть вашим выбором по умолчанию, когда вы начинаете свой путь с машинного обучения. Это сэкономит вам время, возиться с gcc и многочисленными пакетами. Тем не менее, Конда не заменяет virtualenv. Это вносит некоторую дополнительную сложность, которая не всегда желательна. Это идет под другой лицензией. Возможно, вы захотите избежать использования conda в распределенных средах или на оборудовании HPC.
источник
conda
установленного программного обеспечения и библиотек. А в HPCconda
предпочтительнее во многих случаях, фактически он используется администраторами HPC для замены таких вещей, какmodule
системы. Это позволяет устанавливать программное обеспечение, установленное пользователем, и обеспечивать большую изоляцию программного обеспечения - две большие проблемы в HPC. Единственное предостережение, которое я испытываю, заключается в том, что многие файловые системы HPC имеют жесткие ограничения на количество файлов в каталоге, и conda создает тысячи файлов.Я использую оба, и (по состоянию на январь 2020 года) у них есть некоторые поверхностные различия, которые можно использовать для меня по-разному. По умолчанию Conda предпочитает управлять списком сред для вас в центральном расположении, тогда как virtualenv создает папку в текущем каталоге. Первый (централизованный) имеет смысл, если вы, например, занимаетесь машинным обучением и у вас есть пара широких сред, которые вы используете во многих проектах и хотите перейти к ним из любого места. Последнее (для каждой папки проекта) имеет смысл, если вы делаете маленькие одноразовые проекты, которые имеют совершенно разные наборы требований к lib, которые действительно больше относятся к самому проекту.
Пустая среда, которую создает Conda, составляет около 122 МБ, тогда как virtualenv составляет около 12 МБ, поэтому это еще одна причина, по которой вы можете не разбрасывать среду Conda повсюду.
Наконец, еще одним поверхностным признаком того, что Conda предпочитает свои централизованные envs, является то, что (опять же, по умолчанию), если вы создаете Enda Conda в своей папке проекта и активируете его, префикс имени, который появляется в вашей оболочке, является (слишком длинным) абсолютным путь к папке. Вы можете исправить это, присвоив ему имя, но virtualenv по умолчанию работает правильно.
Я ожидаю, что эта информация быстро устареет, поскольку два менеджера пакетов соперничают за доминирование, но это компромиссы на сегодняшний день :)
источник
pipenv
?Еще одна новая опция, и мой текущий предпочтительный метод настройки и запуска среды - это Pipenv.
В настоящее время это официально рекомендуемый инструмент для упаковки Python от Python.org.
источник
pipenv --two
для Python2 и pipenv - три для python3Да,
conda
намного легче установить, чемvirtualenv
, и в значительной степени заменяет последний.источник
virtualenv
более общим инструментом управления виртуальной средойconda
. Кроме того, Anaconda - это всего лишь дистрибутив Python +, который включает инструмент Conda; вопрос (и ответ) только о Конде.Я работаю в корпоративном, за несколькими брандмауэрами с машиной, на которой у меня нет прав администратора
В моем ограниченном опыте работы с Python (2 года) я сталкивался с несколькими библиотеками (JayDeBeApi, sasl), которые при установке через pip threw C ++ выявляют ошибку зависимости: требуется Microsoft Visual C ++ 14.0. Получите его с помощью "Microsoft Visual C ++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
они хорошо установлены с conda, поэтому с тех пор я начал работать с conda env. Однако нелегко остановить conda от установки зависимости внутри c.programfiles, где у меня нет прав на запись.
источник