Wie identifiziert man die Abhängigkeiten von Conda-Paketen?

9

Wie lade ich für ein bestimmtes conda -Paket die Pakete auf, die davon abhängen?

Ich habe kürzlich Anaconda auf einem Universitätscluster installiert, der bereits eine Version von MPI (openmpi) hatte. Die mit anaconda installierten Pakete mpich2 package und mpi4py waren für Demos von mpi4py in Ordnung, aber die mpi* Compiler (mpicc, etc.) waren nicht kompatibel. Also habe ich conda remove 'd mpich2 und mpi4py und pip verwendet, um mpi4py mit der lokalen MPI-Installation und den Compilern zu installieren.

Ich musste nach den Abhängigkeiten von mpi4py suchen und dann nach mpich2 , für die ich nur mpi4py identifiziert habe. Gibt es einen "einfachen" Weg herauszufinden, was von mpich2 abhängt?

    
Yann 29.09.2014, 14:13
quelle

2 Antworten

5

Beim Durchsuchen des Paketcaches werden nur die Pakete angezeigt, die Sie bereits heruntergeladen haben. Für Ihren Fall ist dieses Verhalten in Ordnung, aber wenn Sie jedes Paket kennen möchten, das von einem bestimmten Paket abhängt, ist es besser, die Repodaten Ihrer Kanäle zu durchsuchen. Die Repodaten werden in ~/anaconda/pkgs/cache zwischengespeichert, oder Sie können mit Ihrem Browser zu Ссылка navigieren und auf repodata.json for klicken die Plattform, die Sie verwenden (für Binstar, gehen Sie zum Beispiel Ссылка ). Dann suchen Sie den Namen des Pakets in der "hängt" -Taste.

    
asmeurer 30.09.2014, 15:19
quelle
17

conda info teilt Ihnen das Verzeichnis (oder die Verzeichnisse) mit, in dem sich package cache befindet. Diese Verzeichnisse enthalten ein eindeutiges Verzeichnis für jedes Paket, und jedes Paketverzeichnis enthält ein Verzeichnis info und eine Datei namens index.json . In jeder dieser Dateien befindet sich ein requires -Feld, das auf eine Liste von conda -Abhängigkeiten verweist. Kurz gesagt, müssen Sie diese Dateien nach dem Paket durchsuchen, das Sie entfernen möchten.

Wenn zum Beispiel anaconda in meinem Home-Verzeichnis installiert ist und daher der Paket-Cache ~/anaconda/pkgs ist, würde ich, um nach mpich2 's Abhängigen zu suchen, folgendes tun:

%Vor%

Sie werden zwei Zeilen für das Paket anaconda sehen, weil mpich2 sowohl in der oben erwähnten requires -Liste als auch in einer Liste namens depends ist. Sie sehen auch eine Zeile für jedes verfügbare mpich2 -Paket, da für jedes Paket auch ein name -Feld vorhanden ist. Dann sehen Sie eine oder mehrere Zeilen für jedes Paket, von dem abhängig mpich2 benötigt wird. Meine Suche ergab nur mpi4py .

Nun dachte ich, du könntest --dry-run remove machen, aber es scheint, dass remove keine Abhängigkeiten entfernt, also ist nichts besonderes aufgeführt.

Wenn grep nicht verfügbar ist, bin ich mir sicher, dass Sie ein Python-Skript erstellen könnten, um dasselbe zu tun, indem Sie das glob -Modul und vielleicht sogar json für die Suche verwenden.

    
Yann 29.09.2014 14:13
quelle

Tags und Links