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?
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.
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:
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.
Tags und Links conda