Bagaimana cara menggunakan pip Python untuk mengunduh dan menyimpan file zip untuk sebuah paket?

105

Jika saya ingin menggunakan pipperintah untuk mengunduh paket (dan dependensinya), tetapi menyimpan semua file zip yang diunduh (misalnya, django-socialregistration.tar.gz) - adakah cara untuk melakukannya?

Saya telah mencoba berbagai opsi baris perintah, tetapi tampaknya selalu membongkar dan menghapus zipfile - atau mendapat zipfile, tetapi hanya untuk paket asli, bukan dependensinya.

John C
sumber

Jawaban:

78

pip install --downloadsudah ditinggalkan. Mulai dari versi 8.0.0 Anda harus menggunakan pip downloadperintah:

 pip download <package-name>
Anton Khodak
sumber
3
dan bagaimana cara menginstal paket yang diunduh nanti?
knocte
2
Ini adalah jawaban paling mutakhir. Terima kasih
KJ50
3
@knoctepip install path-to-downloaded-package
Anton Khodak
5
mencobanya beberapa hari yang lalu dan saya pikir itu masih mencoba mengambil deps dari internet daripada menggunakan yang diunduh; IIRC, saya harus menggunakansudo pip install <path-to-downloaded-package> --no-index --find-links `pwd`
knocte
3
Perhatikan bahwa itu pip downloadjuga mendukung -r requirements.txtsehingga Anda dapat dengan mudah mengunduh semuanya dari mesin yang terhubung ke internet kemudian menyalin ke mesin offline dan menginstal bagaimana komentator di atas menyebutkan
Hawkins
113

The --download-cachepilihan harus melakukan apa yang Anda inginkan:

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

Namun, ketika saya menguji ini, paket utama diunduh, disimpan, dan diinstal dengan baik, tetapi dependensinya disimpan dengan jalur url lengkap mereka sebagai nama - agak mengganggu, tetapi semua tar.gzfile ada di sana.

The --downloadpilihan mendownload paket utama dan dependensinya dan tidak menginstal salah satu dari mereka. ( Catatan bahwa sebelum versi 1.1 yang --downloadpilihan tidak tidak men-download dependensi.)

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

The pipdokumentasi garis besar menggunakan --downloaduntuk cepat & lokal menginstal .

Tandai Gemmill
sumber
5
Bagus, itu memang berhasil - meskipun saya menandai --no-installopsi. Dan Anda benar tentang nama file yang funky, tapi setidaknya file tersebut ada di sana .
John C
terakhir kali saya centang, --downloadopsi unduh paket dengan dependensi.
Mohammad Niknam
3
--download-cache tidak digunakan lagi. gunakan pip install --download <dir> <pkg>
ostler.c
18
pip install --downloadsekarang tidak digunakan lagi, dan akan dihapus dari pip 10. pip.pypa.io/en/latest/reference/pip_download/#overview . Gunakan pip download somepackage.
Sнаđошƒаӽ
17
Secara khusus, padanan baru adalahpip download -d <dir> { -r requirements.txt | <packagename> }
rrauenza
57

Saya selalu melakukan ini untuk mengunduh paket:

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

ATAU

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

Dan ketika saya ingin menginstal semua perpustakaan yang baru saja saya unduh, saya melakukan ini:

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

ATAU

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


Memperbarui

Juga, untuk mendapatkan semua paket yang diinstal pada satu sistem, Anda dapat mengekspor semuanya ke requirement.txtyang akan digunakan untuk menginstalnya di sistem lain, kami melakukan ini:

pip freeze > requirement.txt

Kemudian, requirement.txtdapat digunakan seperti di atas untuk mengunduh, atau lakukan ini untuk menginstalnya dari requirement.txt:

pip install -r requirement.txt

REFERENSI: installer pip

securecurve
sumber
6

Dalam versi 7.1.2 pip mengunduh roda sebuah paket (jika tersedia) dengan yang berikut ini:

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

Berikut download distribusi sumber:

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

Ini juga mendownload dependensi, jika pip menyadarinya (misalnya, jika pip show packagemencantumkannya).


Memperbarui

Seperti dicatat oleh Anton Khodak , pip downloadperintah lebih disukai sejak versi 8. Dalam contoh di atas ini berarti /path/to/downloaded/fileperlu diberikan opsi -d, jadi gantilah installdengan downloadkarya.

jasaarim
sumber
Saya harus mengembangkan di windows dan menyebarkan di RH7 tanpa koneksi internet sama sekali. Jadi saya mengunduh paket sumber dengan --no-binary: all:. Namun ini gagal ketika Mengumpulkan django-pyodbc-azure == 2.0.4.1 karena paket ini tidak memiliki sumber. Apakah ada cara untuk mengunduh sumber atau jika ini tidak ada, untuk mengunduh weehl?
cwhisperer
6

Menggunakan pip download <package1 package2 package n> untuk mengunduh semua paket termasuk dependensi

Gunakan pip install --no-index --find-links . <package1 package2 package n>untuk menginstal semua paket termasuk dependensi. Itu mendapatkan semua file dari CWD. Itu tidak akan mengunduh apa pun

Siva Kranthi Kumar
sumber
2

pip wheel adalah opsi lain yang harus Anda pertimbangkan:

pip wheel mypackage -w .\outputdir

Ini akan mengunduh paket dan dependensinya ke direktori (direktori kerja saat ini secara default), tetapi itu melakukan langkah tambahan untuk mengubah paket sumber apa pun ke roda.

Ini dengan mudah mendukung file persyaratan:

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

Tambahkan --no-depsargumen jika Anda hanya menginginkan paket yang diminta secara khusus:

pip wheel mypackage -w .\outputdir --no-deps
jpmc26.dll
sumber
0

Saya lebih suka (RHEL) - pip download package==version --no-deps --no-binary=:all:

Santosh K
sumber
-1

menginstal paket python secara offline

Untuk pengguna windows :

Untuk mengunduh ke dalam file, buka cmd Anda dan ikuti ini:

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

pip download <*package name*>

paket dan dependensi akan diunduh di direktori kerja saat ini.

Untuk menginstal dari direktori kerja saat ini:

atur folder Anda di mana Anda mengunduh sebagai cwd lalu ikuti ini:

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

ini akan mencari dependensi di lokasi itu.

Joseph Puthumana
sumber
jika Anda tidak menentukan platformnya, itu akan mengunduh file untuk OS saat ini. Karenanya ini tidak akan berfungsi jika Anda menginstal file yang diunduh di OS lain
Prometheus