In nodejs kann ich npm install package --save-dev
das installierte Paket im Paket speichern.
Wie erreiche ich dasselbe im Python-Paketmanager pip
? Ich möchte den Paketnamen und seine Version beispielsweise requirements.pip
unmittelbar nach der Installation des Pakets mit so etwas wie speichern pip install package --save-dev requirements.pip
.
pip freeze > requirements.pip
npm install package --save-dev
kombiniert sowohl die Installation als auch das Hinzufügen zur Anforderungsdatei node_npm gleichzeitig. Es ist praktischer. Mitpip freeze
muss ich zwei Befehle ausführen, um dasselbe zu tun: 1)pip install package
2)pip freeze > requirements.pip
--save
Option.Antworten:
Es gibt kein Äquivalent zu
pip
.Der beste Weg ist zu
pip install package && pip freeze > requirements.txt
Sie können alle verfügbaren Optionen auf ihrer Dokumentationsseite sehen .
Wenn es Sie wirklich stört, ist es nicht allzu schwierig, ein benutzerdefiniertes Bash-Skript (
pips
) zu schreiben , das ein-s
Argument aufnimmt undrequirements.txt
automatisch in Ihre Datei einfriert .Bearbeiten 1
Seitdem dies geschrieben wurde, hat sich nichts an der Bereitstellung einer
--save-dev
NPM-ähnlichen Auto- Option geändert. Kenneth Reitz (Autor vonrequests
und viele weitere) hat jedoch weitere Informationen zu einem besseren Pip-Workflow veröffentlicht , umpip
Aktualisierungen besser handhaben zu können .Bearbeiten 2
In Verbindung mit dem obigen Artikel "Besserer Pip-Workflow" wird jetzt empfohlen
pipenv
, Anforderungen und virtuelle Umgebungen zu verwalten. Nachdem ich dies in letzter Zeit häufig verwendet habe, möchte ich zusammenfassen, wie einfach der Übergang ist:Installieren
pipenv
(auf Mac)pipenv
Erstellt und verwaltet seine eigenen virtuellen Umgebungen. In einem Projekt mit einer vorhandenen Umgebungrequirements.txt
ist die Installation aller Anforderungen (ich verwende Python3.7, aber Sie können die entfernen,--three
wenn Sie dies nicht tun) so einfach wie:Das Aktivieren der virtuellen Umgebung zum Ausführen von Befehlen ist ebenfalls einfach
Durch die Installation der Anforderungen werden das
Pipfile
und automatisch aktualisiertPipfile.lock
Es ist auch möglich, veraltete Pakete zu aktualisieren
Ich empfehle dringend , es auszuprobieren, insbesondere wenn es aus einem
npm
Hintergrund stammt, da es sich ähnlich anfühlt wiepackage.json
undpackage-lock.json
quelle
pipenv
können Sie eindev-packages
in IhremPipfile
und / oder verwenden--dev
(oder-d
) über die Befehlszeile angeben . zBpipenv install --dev nose2
Diese einfache Linie ist ein Ausgangspunkt. Sie können einfach einen Bash-Befehl erstellen, um das PAKET in der Zeile wiederzuverwenden.
Vielen Dank an @devsnd für das einfache Bash-Funktionsbeispiel:
Um es zu verwenden, führen Sie einfach Folgendes aus:
quelle
P=Flask pip install $P && pip freeze | grep $P >> requirements.txt
Ich habe ein Python-Paket erstellt, das sich um das tatsächlich
pip
als pipm bezeichnete Paket dreht . Allepip
Befehle funktionieren unverändert und werden in der Anforderungsdatei wiedergegeben. Im Gegensatz zupip-save
(ein ähnliches Tool, das ich gefunden habe und das ich nicht verwenden konnte) kann es viele Dateien und Umgebungen (Test, Entwicklung, Produktion usw.) verarbeiten. Es hat auch den Befehl, alle / einige Ihrer Abhängigkeiten zu aktualisieren.Installation
pipm install pkg-name
Installation als Entwicklungsabhängigkeit
pipm install pkg-name --dev
Installation als Testabhängigkeit
pipm install pkg-name --test
Entfernung
pipm uninstall pkg-name
Aktualisieren Sie alle Ihre Abhängigkeiten
pipm update
Installieren Sie alle Ihre Abhängigkeiten aus der Anforderungsdatei
pipm install
einschließlich Entwicklungsabhängigkeiten
pipm install --dev
quelle
Update: Anscheinend wird pipenv nicht offiziell von Python-Betreuern empfohlen , und die zuvor verlinkte Seite gehört einer anderen Organisation. Das Tool hat seine Vor- und Nachteile, aber die folgende Lösung erzielt immer noch das vom OP angestrebte Ergebnis.
pipenv ist ein Tool zur Abhängigkeitsverwaltung
pip
, das unter anderem Folgendes enthält:https://pipenv.kennethreitz.org/en/latest/#example-pipenv-workflow
A
Pipfile
ist ein direktes Äquivalent vonpackage.json
, währendPipfile.lock
entsprichtpackage-lock.json
.quelle
Ich habe einen kurzen Hack gemacht
pip
, um eine--save
Option zum Installieren / Deinstallieren von Befehlen hinzuzufügen .Weitere Informationen zu diesem Hack finden Sie in meinem Blog: http://blog.abhiomkar.in/2015/11/12/pip-save-npm-like-behaviour-to-pip/
Installation (GitHub): https://github.com/abhiomkar/pip-save
Hoffe das hilft.
quelle
Sie können es manuell in einem Makefile (oder einer Textdatei speichern und dann in Ihr Makefile importieren):
und dann einfach rennen
make install
quelle
Ich verwende diese kleine Befehlszeile, um ein Paket zu installieren und seine Version zu speichern in
requirements.txt
:pkg=package && pip install $pkg && echo $(pip freeze | grep -i $pkg) >> requirements.txt
quelle
Wie wäre es damit, eine Shell-Funktion zu erstellen, um dies zu tun? Fügen Sie den folgenden Code zu Ihrem
~/.profile
oder hinzu~/.bashrc
Führen Sie dann aus
source ~/.profile
odersource ~/.bashrc
importieren Sie es in Ihr aktuelles TerminalWenn Sie ein Paket installieren und speichern möchten, führen Sie es einfach aus
pips requests
. Nach der Installation des Pakets wird seine Versionrequirements.txt
in Ihrem aktuellen Verzeichnis gespeichert.quelle