Ich benutze beide und (Stand: Januar 2020) sie haben einige oberflächliche Unterschiede, die sich für mich für unterschiedliche Verwendungen eignen. Mit dem Standard bevorzugt Conda eine Liste der Umgebungen für Sie in einem zentralen Standort aus zu verwalten, während virtualenv einen Ordner im aktuellen Verzeichnis macht. Ersteres (zentralisiert) ist sinnvoll, wenn Sie z. B. maschinelles Lernen betreiben und nur über ein paar breite Umgebungen verfügen, die Sie in vielen Projekten verwenden und von überall aus darauf zugreifen möchten. Letzteres (pro Projektordner) ist sinnvoll, wenn Sie kleine einmalige Projekte mit völlig unterschiedlichen Lib-Anforderungen durchführen, die wirklich mehr zum Projekt selbst gehören.
Die leere Umgebung, die Conda erstellt, ist ungefähr 122 MB groß, während die virtuelle Umgebung ungefähr 12 MB groß ist. Dies ist ein weiterer Grund, warum Sie Conda-Umgebungen möglicherweise nicht überall verteilen möchten.
Ein weiterer oberflächlicher Hinweis darauf, dass Conda seine zentralisierten Envs bevorzugt, ist, dass (wieder standardmäßig), wenn Sie eine Conda-Env in Ihrem eigenen Projektordner erstellen und aktivieren, das in Ihrer Shell angezeigte Namenspräfix das (viel zu lange) Absolut ist Pfad zum Ordner. Sie können dies beheben, indem Sie ihm einen Namen geben, aber virtualenv macht standardmäßig das Richtige.
Ich gehe davon aus, dass diese Informationen schnell veralten werden, wenn die beiden Paketmanager um die Vorherrschaft kämpfen, aber dies sind die Kompromisse ab heute :)