webentwicklung-frage-antwort-db.com.de

Ersetzt Conda die Notwendigkeit für virtualenv?

Ich habe kürzlich Conda entdeckt, nachdem ich Probleme mit der Installation von SciPy hatte, insbesondere auf einer Heroku-App, die ich entwickle.

Mit Conda erstellen Sie Umgebungen, die denen von virtualenv sehr ähnlich sind. Meine Fragen sind:

  1. Wenn ich Conda benutze, ersetzt es die Notwendigkeit für virtualenv? Wenn nicht, wie verwende ich die beiden zusammen? Installiere ich virtualenv in Conda oder Conda in virtualenv?
  2. Muss ich noch pip benutzen? Wenn ja, kann ich trotzdem Pakete mit pip in einer isolierten Umgebung installieren?
178
Johan
  1. Conda ersetzt virtualenv. Meiner Meinung nach ist es besser. Es ist nicht auf Python) beschränkt, sondern kann auch für andere Sprachen verwendet werden. Meiner Erfahrung nach bietet es eine viel flüssigere Erfahrung, insbesondere für wissenschaftliche Pakete. Das erste Mal, dass MayaVi ordnungsgemäß auf einem Mac installiert wurde, war mit conda.

  2. Sie können weiterhin pip verwenden. Tatsächlich installiert condapip in jeder neuen Umgebung. Es kennt sich mit pip-installierten Paketen aus.

Zum Beispiel:

conda list

listet alle installierten Pakete in Ihrer aktuellen Umgebung auf. Von Conda installierte Pakete werden folgendermaßen angezeigt:

sphinx_rtd_theme          0.1.7                    py35_0    defaults

und die, die über pip wie folgt installiert wurden:

wxpython-common           3.0.0.0                   <pip>
138
Mike Müller

Kurze Antwort ist, brauchen Sie nur conda.

  1. Conda kombiniert effektiv die Funktionalität von pip und virtualenv in einem einzigen Paket, sodass Sie virtualenv nicht benötigen, wenn Sie conda verwenden.

  2. Sie wären überrascht, wie viele Pakete conda unterstützt. Wenn es nicht ausreicht, können Sie pip under conda verwenden.

Hier ist ein Link zur Conda-Seite, auf der conda, pip und virtualenv verglichen werden:

https://docs.conda.io/projects/conda/en/latest/commands.html#conda-vs-pip-vs-virtualenv-commands .

54
Mad Physicist

Virtuelle Umgebungen und pip

Ich werde hinzufügen, dass Erstellen und Entfernen Conda-Umgebungen mit Anaconda einfach ist.

> conda create --name <envname> python=<version> <optional dependencies>

> conda remove --name <envname> --all 

Installieren Sie in einer aktivierten Umgebung Pakete über conda oder pip:

(envname)> conda install <package>

(envname)> pip install <package>

Diese Umgebungen sind stark an condas pip-ähnliches Paketmanagement gebunden, so dass es einfach ist, Umgebungen zu erstellen und sowohl Python als auch Nicht-Python-Pakete zu installieren.


Jupyter

Darüber hinaus wird durch Installation von ipykernel in einer Umgebung eine neue Liste im Dropdown-Menü "Kernel" von Jupyter-Notebooks hinzugefügt, wodurch reproduzierbare Umgebungen auf Notebooks ausgedehnt werden. Ab Anaconda 4.1 es wurden Erweiterungen hinzugefügt , wodurch das Hinzufügen von Erweiterungen zu Notebooks einfacher wird.

Zuverlässigkeit

Meiner Erfahrung nach kann conda große Bibliotheken wie numpy und pandas schneller und zuverlässiger installieren. Darüber hinaus können Sie den Zustand einer Umgebung übertragen, indem Sie sharing oder cloning eine Umgebung angeben.

31
pylang

Wenn Sie Conda installieren, können Sie python Umgebungen nach Ihren Wünschen erstellen und entfernen, sodass Sie die gleiche Funktionalität erhalten wie mit virtualenv .

Bei beiden Distributionen können Sie einen isolierten Dateisystembaum erstellen, in dem Sie nach Belieben python Pakete (wahrscheinlich mit pip) installieren und entfernen können Sie möchten verschiedene Versionen derselben Bibliothek für verschiedene Anwendungsfälle haben oder Sie möchten nur eine Distribution ausprobieren und diese anschließend entfernen, um Speicherplatz zu sparen.

Unterschiede:

Lizenzvereinbarung. Während virtualenv unter die liberalste MIT-Lizenz fällt, verwendet Conda die 3-Klausel-BSD-Lizenz.

Conda stellt Ihnen ein eigenes Paketkontrollsystem zur Verfügung. Dieses Paketkontrollsystem bietet häufig vorkompilierte Versionen (für die meisten gängigen Systeme) von gängiger Nicht-Python-Software, mit denen sich maschinelle Lernpakete auf einfache Weise zum Laufen bringen lassen. Sie müssen nämlich keinen optimierten C/C++ - Code für Ihr System kompilieren. Obwohl dies für die meisten von uns eine große Erleichterung darstellt, kann es die Leistung solcher Bibliotheken beeinträchtigen.

Im Gegensatz zu virtualenv dupliziert Conda einige Systembibliotheken zumindest auf Linux-Systemen. Diese Bibliotheken können nicht synchronisiert werden, was zu inkonsistentem Verhalten Ihrer Programme führt.

Urteil:

Conda ist großartig und sollte Ihre Standardwahl sein, wenn Sie mit maschinellem Lernen beginnen. Sie sparen Zeit, wenn Sie mit gcc und zahlreichen Paketen herumspielen. Conda ersetzt jedoch nicht virtualenv. Es bringt eine zusätzliche Komplexität mit sich, die möglicherweise nicht immer gewünscht ist. Es kommt unter anderer Lizenz. Möglicherweise möchten Sie die Verwendung von conda in verteilten Umgebungen oder auf HPC-Hardware vermeiden.

14
y.selivonchyk

Eine weitere neue Option und meine derzeit bevorzugte Methode, um eine Umgebung zum Laufen zu bringen, ist Pipenv

Es ist derzeit das offiziell empfohlene Python Paketierungs-Tool von Python.org

7
Johan

Ja, conda ist viel einfacher zu installieren als virtualenv und ersetzt so ziemlich das Letztere.

2
Liang Huang