2015-03-26 14 views
10

Bei Verwendung der Anacoda Python-Distribution, was ist der beste Weg, um ein PyPI-Paket zu installieren, die nicht direkt durch Anaconda installieren? Denn jetzt bin ich mit:Wie PyPI Pakete mit anacaonda Conda Befehl

conda pipbuild [pypi_name] 
conda install --use-local [package_spec] 

Aber ich bin unklar, ob dies der beste Weg ist, und wenn conda update --all diese Pakete aktualisieren, wenn Updates zur Verfügung gestellt werden. Ich bin auch nicht klar, was der Punkt von binstar ist, wenn PyPi bereits existiert.

Antwort

13

Wenn Sie Conda-Pakete für PyPI-Pakete erstellen möchten, sollten Sie conda skeleton pypi package verwenden und conda build package für das Rezept verwenden, das erstellt wird. Sie müssen das Rezept jedes Mal aktualisieren, wenn das Paket aktualisiert wird.

Sie können auch pip verwenden, um diese Pakete zu installieren. Der Nachteil hierbei ist, dass diese Pakete von Conda überhaupt nicht verwaltet werden.

+1

Danke! Dumme Frage: Was bringt mir die Wohnung Verwaltung der Pakete? Abhängigkeitsmanagement meist? Automatische Updates? Warum ist die von Ihnen beschriebene Methode besser als die oben beschriebene? – user1507844

+0

conda Dinge zu managen bringt Ihnen die Vorteile des Abhängigkeitsmanagements. Es erleichtert auch die Verwendung dieses Pakets mit Conda-Umgebungen. Updates werden nicht "automatisch" ausgeführt (in dem Sinne, dass Sie "conda update" eingeben müssen, damit dies geschieht). Warum ist es vorzuziehen, "Conda-Skelett" ist viel stabiler als "Conda Pipbuild". – asmeurer

+0

Es sagt dies nicht in http://conda.pydata.org/docs/using/pkgs.html#install-non-conda-packages es sagt nur 'pip install x'. Sollten diese Anweisungen aktualisiert werden? – endolith

12

Ich werde mit der akzeptierten Antwort nicht einverstanden ist und beachten Sie, dass pip install [some-pypi-package] ist oft der beste Weg PyPI Pakete in Conda Umgebungen zu installieren.

Während die Pakete nicht von dem Conda Paket-Manager verwaltet werden, werden sie noch von der Anaconda-Umgebung verwaltet werden. Es wird die korrekte Version des Pakets für die aktive Python-Installation heruntergeladen und korrekt mit dem Paketmanager pip aktualisiert.

Wenn Anaconda verwenden, sollten Sie zu conda vor pip drehen, wenn Sie können, aber du nicht der Replizierbarkeit Vorteile der Verwendung von Anaconda verlieren, wenn Sie pip verwenden.

+1

Ein Problem, das zu beachten ist: Wenn ein 'pip'-Paket eine andere Version einer Abhängigkeit benötigt, die bereits von' conda' installiert wurde, wird 'pip' das installierte Paket ersetzen, und' conda' wird sein Paket nicht realisieren Wurde entfernt. Für eine einmalige, skriptgesteuerte Umgebung ist dies wahrscheinlich in Ordnung. Für eine Umgebung, in die Sie sich im Laufe der Zeit installieren, werden Sie wahrscheinlich nach einiger Zeit verwirrt sein. –

+0

Eine Möglichkeit, die Frage, die ich oben erwähnt zu mildern: Speichern Sie die Ausgabe von 'pip freeze' auf' constraints.txt' und installieren Sie dann mit 'pip' mit' installieren -c constraints.txt 'pip. Dies verhindert, dass "pip" 'conda' Pakete entfernt. Es wird auch 'pip' Pakete pinnen. Die 'pip'-Pakete können aus' constrains.txt' herausgefiltert werden, indem die Ausgabe von 'conda list' für die als' ' gekennzeichneten Objekte betrachtet wird. –

+0

Für Dinge wie Django, ich werde eine virtuelle Umgebung mit Anaconda einrichten dann Installationen tun rein durch Pip für oben genannten Gründen. Pure Conda funktioniert am besten, um einen wissenschaftlichen Computer-Stack zu erhalten, der Conda-Kanäle verwendet. –