W nodejs mogę zrobić, npm install package --save-dev
aby zapisać zainstalowany pakiet w pakiecie.
Jak mogę osiągnąć to samo w menedżerze pakietów Pythona pip
? Chciałbym zapisać nazwę pakietu i jego wersję, powiedzmy, requirements.pip
zaraz po zainstalowaniu pakietu za pomocą czegoś podobnego pip install package --save-dev requirements.pip
.
pip freeze > requirements.pip
npm install package --save-dev
łączy jednocześnie instalację i dodatek do pliku wymagań node_npm. To jest bardziej przydatne. Zpip freeze
muszę wykonać dwa polecenia, aby zrobić to samo: 1)pip install package
2)pip freeze > requirements.pip
--save
opcją.Odpowiedzi:
Nie ma odpowiednika z
pip
.Najlepszym sposobem jest
pip install package && pip freeze > requirements.txt
Możesz zobaczyć wszystkie dostępne opcje na ich stronie dokumentacji .
Jeśli naprawdę Ci to przeszkadza, napisanie niestandardowego skryptu bash (
pips
), który bierze-s
argument i automatycznie zawiesza się w twoimrequirements.txt
pliku , nie byłoby zbyt trudne .Edytuj 1
Od czasu napisania tego nie było żadnej zmiany w zapewnieniu
--save-dev
opcji automatycznej podobnej do NPM, jednak Kenneth Reitz (autorrequests
i wiele innych) opublikował więcej informacji na temat lepszego przepływu pracy pip, aby lepiej obsługiwaćpip
aktualizacje.Edytuj 2
W powiązaniu z powyższym artykułem „lepszy przepływ pracy pip” zaleca się teraz, aby używać go
pipenv
do zarządzania wymaganiami i środowiskami wirtualnymi. Korzystając z tego ostatnio, chciałbym podsumować, jak proste jest przejście:Zainstaluj
pipenv
(na komputerze Mac)pipenv
tworzy własne środowiska wirtualne i zarządza nimi, więc w projekcie z istniejącymrequirements.txt
instalowanie wszystkich wymagań (używam Python3.7, ale jeśli nie, możesz usunąć--three
) jest tak proste, jak:Aktywacja virtualenv do uruchamiania poleceń jest również łatwa
Wymagania instalacyjne automatycznie zaktualizują
Pipfile
iPipfile.lock
Możliwe jest również aktualizowanie nieaktualnych pakietów
Gorąco polecam sprawdzenie, zwłaszcza jeśli pochodzi z
npm
tła, ponieważ ma podobny wyglądpackage.json
ipackage-lock.json
źródło
pipenv
pozwala określićdev-packages
wPipfile
i / lub użyć--dev
(lub-d
) z wiersza poleceń. np.pipenv install --dev nose2
Ta prosta linia jest punktem wyjścia. Możesz łatwo zbudować polecenie bash, aby ponownie użyć PAKIETU w linii.
Dzięki @devsnd za prosty przykład funkcji bash:
Aby go użyć, po prostu uruchom:
źródło
P=Flask pip install $P && pip freeze | grep $P >> requirements.txt
Stworzyłem pakiet Pythona, który otacza rzeczywistą
pip
nazwę pipm . Wszystkiepip
polecenia będą działać bez zmian, a ponadto zostaną odzwierciedlone w pliku wymagań. W przeciwieństwie dopip-save
(podobne narzędzie, którego znalazłem i którego nie byłem w stanie użyć) może obsługiwać wiele plików i środowisk (test, programowanie, produkcja itp.). Ma także polecenie uaktualnienia wszystkich / dowolnych zależności.instalacja
pipm install pkg-name
instalacja jako zależność programistyczna
pipm install pkg-name --dev
instalacja jako zależność testowa
pipm install pkg-name --test
usuwanie
pipm uninstall pkg-name
zaktualizuj wszystkie swoje zależności
pipm update
zainstaluj wszystkie zależności z pliku wymagań
pipm install
w tym zależności rozwojowe
pipm install --dev
źródło
Aktualizacja: najwyraźniej pipenv nie jest oficjalnie zatwierdzony przez opiekunów Pythona , a poprzednio połączona strona jest własnością innej organizacji. Narzędzie ma swoje zalety i wady, ale poniższe rozwiązanie nadal osiąga wynik, którego szuka PO.
pipenv to narzędzie do zarządzania zależnościami, które zawiera
pip
i, między innymi, zapewnia to, o co pytasz:https://pipenv.kennethreitz.org/en/latest/#example-pipenv-workflow
A
Pipfile
jest bezpośrednim odpowiednikiempackage.json
, podczas gdyPipfile.lock
odpowiadapackage-lock.json
.źródło
Zrobiłem szybki hack,
pip
aby dodać--save
opcję instalowania / odinstalowywania poleceń.Proszę spojrzeć na mojego bloga, aby uzyskać więcej informacji na temat tego hacka: http://blog.abhiomkar.in/2015/11/12/pip-save-npm-like-behaviour-to-pip/
Instalacja (GitHub): https://github.com/abhiomkar/pip-save
Mam nadzieję że to pomoże.
źródło
możesz ręcznie zapisać go w pliku Makefile (lub pliku tekstowym, a następnie zaimportować do pliku Makefile):
a potem po prostu biegnij
make install
źródło
Korzystam z tego małego wiersza polecenia, aby zainstalować pakiet i zapisać jego wersję w
requirements.txt
:pkg=package && pip install $pkg && echo $(pip freeze | grep -i $pkg) >> requirements.txt
źródło
Co powiesz na wykonanie funkcji powłoki, aby to zrobić? Dodaj poniższy kod do swojego
~/.profile
lub~/.bashrc
następnie uruchom
source ~/.profile
lub,source ~/.bashrc
aby zaimportować go do bieżącego terminalajeśli chcesz zainstalować && zapisać pakiet, po prostu uruchom, na przykład
pips requests
. po zainstalowaniu pakietu jego wersja zostanie zapisanarequirements.txt
w bieżącym katalogu.źródło