Jak używać pip Pythona do pobierania i przechowywania spakowanych plików pakietu?

105

Jeśli chcę użyć pippolecenia, aby pobrać pakiet (i jego zależności), ale zachować wszystkie pobrane pliki spakowane (na przykład django-socialregistration.tar.gz) - czy jest na to sposób?

Próbowałem różnych opcji wiersza poleceń, ale zawsze wydaje się, że rozpakowuje i usuwa plik zip - lub pobiera plik zip, ale tylko dla oryginalnego pakietu, a nie zależności.

John C.
źródło

Odpowiedzi:

80

pip install --downloadjest przestarzałe. Począwszy od wersji 8.0.0 należy użyć pip downloadpolecenia:

 pip download <package-name>
Anton Khodak
źródło
3
i jak później zainstalować pobrane pakiety?
knocte
2
To jest najbardziej aktualna odpowiedź. Dzięki
KJ50
4
@knoctepip install path-to-downloaded-package
Anton Khodak
5
próbowałem tego kilka dni temu i myślę, że nadal próbował pobrać pliki z internetu zamiast korzystać z pobranych; IIRC, musiałem użyćsudo pip install <path-to-downloaded-package> --no-index --find-links `pwd`
knocte
3
Zauważ, że pip downloadobsługuje również, -r requirements.txtdzięki czemu możesz je łatwo pobrać z komputera podłączonego do Internetu, a następnie skopiować na komputer offline i zainstalować, jak wspomnieli powyżej komentatorzy
Hawkins
113

Ta --download-cacheopcja powinna robić, co chcesz:

pip install --download-cache="/pth/to/downloaded/files" package

Jednak kiedy to przetestowałem, główny pakiet został pobrany, zapisany i zainstalowany w porządku, ale zależności zostały zapisane z pełną ścieżką adresu URL jako nazwą - trochę denerwujące, ale wszystkie tar.gzpliki tam były.

Ta --downloadopcja pobiera pakiet główny i jego zależności i nie instaluje żadnego z nich. ( Uwaga , że przed wersją 1.1--download opcji nie nie ściągnąć zależności).

pip install package --download="/pth/to/downloaded/files"

W pipzarysy dokumenty, używając --downloaddo szybkich i lokalnych instalacjach .

Mark Gemmill
źródło
5
Fajnie, to rzeczywiście zadziałało - chociaż zaznaczyłem --no-installopcję. I masz rację co do dziwacznych nazw plików, ale przynajmniej pliki tam są .
John C
ostatnim razem sprawdzałem --downloadopcję pobierz pakiet z zależnościami.
Mohammad Niknam
3
--download-cache jest przestarzałe. użyj pip install --download <dir> <pkg>
ostler.c
18
pip install --downloadobecnie jest przestarzała i zostanie usunięta z pip 10. pip.pypa.io/en/latest/reference/pip_download/#overview . Użyj pip download somepackage.
Sнаđошƒаӽ
18
Konkretnie, nowy odpowiednik topip download -d <dir> { -r requirements.txt | <packagename> }
rrauenza
57

Robię to zawsze, aby pobrać pakiety:

pip install --download /path/to/download/to_packagename

LUB

pip install --download=/path/to/packages/downloaded -r requirements.txt

A kiedy chcę zainstalować wszystkie biblioteki, które właśnie pobrałem, robię to:

pip install --no-index --find-links="/path/to/downloaded/dependencies" packagename

LUB

pip install --no-index --find-links="/path/to/downloaded/packages" -r requirements.txt


Aktualizacja

Ponadto, aby zainstalować wszystkie pakiety w jednym systemie, możesz je wszystkie wyeksportować do requirement.txt były używane do zainstalowania ich w innym systemie, robimy to:

pip freeze > requirement.txt

Następnie requirement.txtmożna użyć jak powyżej do pobrania lub zrobić to, aby zainstalować je zrequirement.txt :

pip install -r requirement.txt

ODNIESIENIE: instalator pip

securecurve
źródło
6

W wersji 7.1.2 pip pobiera koło pakietu (jeśli jest dostępne) z następującymi elementami:

pip install package -d /path/to/downloaded/file

Poniższe pliki do pobrania dystrybucji źródłowej:

pip install package -d /path/to/downloaded/file --no-binary :all:

Pobierają one również zależności, jeśli pip jest ich świadomy (np. Jeśli pip show packageje wyświetla).


Aktualizacja

Jak zauważono Anton Khodak , pip downloadpolecenie jest korzystne, ponieważ w wersji 8. W powyższych przykładach, to oznacza, że /path/to/downloaded/filemusi być podawany z opcji -d, więc zastąpienie installdo downloadrobót.

jasaarim
źródło
Muszę rozwijać się w systemie Windows i wdrażać na RH7 bez żadnego połączenia z Internetem. Więc pobieram pakiety źródłowe za pomocą --no-binary: all:. Jednak kończy się to niepowodzeniem podczas zbierania django-pyodbc-azure == 2.0.4.1, ponieważ ten pakiet nie ma źródła. Czy istnieje sposób na pobranie źródła, a jeśli go nie ma, pobranie pliku weehl?
cwhisperer
6

Służy pip download <package1 package2 package n>do pobierania wszystkich pakietów, w tym zależności

Służy pip install --no-index --find-links . <package1 package2 package n>do instalowania wszystkich pakietów, w tym zależności. Pobiera wszystkie pliki z CWD. Nie pobierze niczego

Siva Kranthi Kumar
źródło
2

pip wheel to kolejna opcja, którą powinieneś rozważyć:

pip wheel mypackage -w .\outputdir

Pobiera pakiety i ich zależności do katalogu (domyślnie bieżący katalog roboczy), ale wykonuje dodatkowy krok polegający na konwersji pakietów źródłowych na koła.

Dogodnie obsługuje pliki wymagań:

pip wheel -r requirements.txt -w .\outputdir

Dodaj --no-depsargument, jeśli chcesz tylko specjalnie żądane pakiety:

pip wheel mypackage -w .\outputdir --no-deps
jpmc26
źródło
0

Wolałbym (RHEL) - pip download package==version --no-deps --no-binary=:all:

Santosh K.
źródło
-1

instalowanie pakietów Pythona w trybie offline

Dla użytkowników systemu Windows :

Aby pobrać do pliku, otwórz cmd i wykonaj następujące czynności:

cd <*the file-path where you want to save it*>

pip download <*package name*>

pakiet i zależności zostaną pobrane do bieżącego katalogu roboczego.

Aby zainstalować z bieżącego katalogu roboczego:

ustaw folder, do którego pobrałeś jako cwd, a następnie wykonaj następujące czynności:

pip install <*the package name which is downloded as .whl*> --no-index --find-links <*the file locaation where the files are downloaded*>

spowoduje to wyszukanie zależności w tej lokalizacji.

Joseph Puthumana
źródło
jeśli nie określisz platformy, pobierze pliki dla bieżącego systemu operacyjnego. Dlatego to nie zadziała, jeśli zainstalujesz pobrane pliki na innym systemie operacyjnym
Prometheus