Während der Installation von Paketen in der Datei "resources.txt" mit Conda über den folgenden Befehl
conda install --yes --file requirements.txt
Wenn ein Paket in der Datei "resources.txt" nicht verfügbar ist, wird ein "Kein Paketfehler" wie der unten gezeigte ausgegeben:
Verwenden der Anaconda Cloud-API-Site https://api.anaconda.org
Paket-Metadaten abrufen: ....
Fehler: In den aktuellen Linux-64-Kanälen wurden keine passenden Pakete gefunden: nimfa == 1.2.3
Sie können dieses Paket auf anaconda.org mit suchen
anaconda search -t conda nimfa ==1.2.3
Kann dieses Verhalten geändert werden, anstatt einen Fehler auszulösen, sodass alle verfügbaren Pakete in der Datei "resources.txt" installiert werden und eine Warnung für diejenigen ausgegeben wird, die nicht verfügbar sind?
Ich möchte dies, weil das Paket nimfa, von dem der Fehler sagt, dass es nicht verfügbar ist, pip installiert werden kann. Wenn ich also das Verhalten ändern kann, conda install --yes --file requirements.txt
um nur eine Warnung für nicht verfügbare Pakete pip install -r requirments.txt
auszulösen , kann ich dem Befehl in .travis.yml folgen, damit TravisCI versucht, sie von jedem Ort aus zu installieren, an dem sie verfügbar ist.
pip install
Pakete, die nicht verfügbar sindconda install
, während der Iteration automatisch zu verwenden ?FOR /F "delims=~" %f in (requirements.txt) DO conda install --yes "%f" || pip install "%f"
Funktioniert sehr gut. Vielen Dank!while read req; do if [[ $req != "#"* ]]; then conda install --yes $requirement || pip install $requirement; fi; done < requirements.txt
Sie können dies tun , wie in erwähnt diese
In .yml-Datei exportieren
Reproduzieren:
quelle
Für diejenigen, die suchen, habe ich dies als @ TillHoffmanns Lösung für die Fischschale verwendet:
Und
quelle
Die Antwort von Pbms hier ist der richtige Weg, vorausgesetzt, Sie haben eine vorhandene Umgebung zum Kopieren. Conda ist in der Lage, sowohl Conda-Pakete als auch Pip-Pakete zu installieren, wie in aufgeführt
environment.yml
. Ich wollte den gesamten Prozess detaillierter dokumentieren. Beachten Sie, dass ich ordnerbasierte Umgebungen verwende, weshalb ich--prefix [path to environment folder]
die meisten Befehle hinzugefügt habe.Angenommen, Sie haben eine Umgebung für ein vorhandenes Projekt in einem Ordner installiert,
env
der im aktuellen Ordner aufgerufen wird , und zwar wie folgt:Sie würden
environment.yml
für die Umgebung dieses Projekts Folgendes generieren :Sie würden eine neue Umgebung in einem anderen Ordner erstellen, indem Sie
environment.yml
dorthin kopieren und diese dann von dort aus ausführen:Sie erhalten eine bereits vorhandene Umgebung,
environment.yml
indem Sie sie erneut kopierenenvironment.yml
und von dort aus ausführen:Wenn die betreffende Umgebung aktiv ist, überprüfen Sie den Status der Pakete wie folgt:
Dies ist eine gekürzte Version dessen, was dieser Befehl möglicherweise druckt (beachten Sie, dass die Pip-Pakete markiert sind
pypi
):Schließlich ist dies eine gekürzte Version dessen
environment.yml
, wie es aussehen könnte (beachten Sie, dass die Pip-Pakete in ihrer eigenen Kategorie aufgeführt sind):Beachten Sie, dass die gleichzeitige Verwendung von Conda und Pip zu Sodbrennen führen kann, da sie die Abhängigkeiten des anderen unwissentlich aufheben können. Sie sollten zuerst alle Ihre Conda-Pakete und anschließend alle Ihre Pip-Pakete installieren, anstatt zwischen den beiden zu wechseln. Wenn Ihre Umgebung kaputt geht, wird offiziell empfohlen, sie zu löschen und neu zu erstellen (aus Ihrer
environment.yml
Datei). Weitere Informationen finden Sie in diesem Handbuch:https://www.anaconda.com/using-pip-in-a-conda-environment/
quelle