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:
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
.
Sie können weiterhin pip
verwenden. Tatsächlich installiert conda
pip
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>
Kurze Antwort ist, brauchen Sie nur conda.
Conda kombiniert effektiv die Funktionalität von pip und virtualenv in einem einzigen Paket, sodass Sie virtualenv nicht benötigen, wenn Sie conda verwenden.
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 .
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.
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.
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.
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.
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
Ja, conda
ist viel einfacher zu installieren als virtualenv
und ersetzt so ziemlich das Letztere.