Ich installiere Pakete von requirements.txt
pip install -r requirements.txt
Die requirements.txt
Datei lautet:
Pillow
lxml
cssselect
jieba
beautifulsoup
nltk
lxml
ist das einzige Paket, das nicht installiert werden kann, und dies führt dazu, dass alles fehlschlägt (erwartete Ergebnisse, wie von Larsks in den Kommentaren hervorgehoben). Doch nach lxml
nicht pip
noch läuft durch und lädt den Rest der Pakete.
Soweit ich weiß, schlägt der pip install -r requirements.txt
Befehl fehl, wenn eines der in der requirements.txt
Installation aufgeführten Pakete nicht installiert werden kann.
Gibt es ein Argument, das ich beim Ausführen übergeben kann pip install -r requirements.txt
, um es anzuweisen, zu installieren, was es kann, und die Pakete zu überspringen, die es nicht kann, oder zu beenden, sobald etwas fehlschlägt?
requirements.txt
, ist es vermutlich erforderlich . Daher ist es sinnvoll, dasspip
dies fehlschlägt, wenn das Paket nicht installiert werden kann. Wenn der Code trotzdem ohne dieses Paket ausgeführt wird, war dies kaum erforderlich. Das zufällige Bereinigen fehlgeschlagener Paketerequirements.txt
scheint nur Probleme mit fehlenden Abhängigkeiten zu verursachen.pip install -r <some file>
Workflow verlassen, um die Erstellung der entsprechenden Umgebung zu standardisieren.Antworten:
Das Ausführen jeder Zeile mit
pip install
kann eine Problemumgehung sein.Hinweis: Der
-a
Parameter ist unter MacOS nicht verfügbar, daher ist die alte Katze portabler.quelle
cat requirements.txt | xargs -n 1 pip install
cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install
alles in den Kommentaren entfernen und leere Zeilen loswerden.xargs
gibt es die-a
Flag-Option, mit derxargs
Argumente aus der Datei gelesen werden könnenxargs -n 1 -a requirements.txt pip install
. Verhindert UUOC und übermäßige InstallationFOR /F %k in (requirements.txt) DO pip install %k
-a
Flagge,< requirements.txt xargs -n 1 pip install
oder wenn Ihnen die Weiterleitung vorne nicht gefälltxargs -n 1 pip install < requirements.txt
. :-)Diese Lösung verarbeitet Leerzeilen, Leerzeichenzeilen, # Kommentarzeilen, Leerzeichen-dann- # Kommentarzeilen in Ihrer Anforderung.txt.
Hutspitze zu dieser Antwort für die sed Magie.
quelle
pip freeze
statt verwendetcat requirements.txt
.Für Windows:
Pip-Version> = 18
Pip-Version <18
quelle
Die
xargs
Lösung funktioniert, kann jedoch Portabilitätsprobleme (BSD / GNU) aufweisen und / oder umständlich sein, wenn Ihre Anforderungsdatei Kommentare oder Leerzeilen enthält.Für den Anwendungsfall, in dem ein solches Verhalten erforderlich wäre, verwende ich beispielsweise zwei separate Anforderungsdateien, von denen eine nur die Kerninstallationen auflistet, die immer installiert werden müssen, und eine andere Datei mit Nicht-Kernabhängigkeiten, die in 90% der Fälle vorliegen wird für die meisten Fälle nicht benötigt. Das wäre ein Äquivalent zum
Recommends
Abschnitt eines Debian-Pakets.Ich verwende das folgende Shell-Skript (erforderlich
sed
), um optionale Abhängigkeiten zu installieren :quelle
Vielen Dank, Etienne Prothon für Windows-Fälle.
Nach dem Upgrade auf Pip 18 wird das Pip-Paket jedoch nicht öffentlich zugänglich gemacht. Möglicherweise müssen Sie den Code so ändern.
quelle
Für Windows:
requirements.txt
Datei darin ab..py
Erweiterung zu verwenden , z.install_packages.py
python install_packages.py
Sie können andere Parameter in der Installationsfunktion hinzufügen. Mögen:
main(['install'] + [str(package)] + ['--update'])
quelle