Làm thế nào để sử dụng pip của Python để tải xuống và giữ các tệp nén cho một gói?


104

Nếu tôi muốn sử dụng piplệnh để tải xuống một gói (và các phần phụ thuộc của nó), nhưng vẫn giữ tất cả các tệp nén được tải xuống (giả sử, django-socialregistration.tar.gz) - có cách nào để làm điều đó không?

Tôi đã thử các tùy chọn dòng lệnh khác nhau, nhưng có vẻ như nó luôn giải nén và xóa tệp zip - hoặc nó nhận tệp zip, nhưng chỉ dành cho gói ban đầu, không phải các gói phụ thuộc.

Câu trả lời:


77

pip install --downloadkhông được dùng nữa. Bắt đầu từ phiên bản 8.0.0, bạn nên sử dụng pip downloadlệnh:

 pip download <package-name>

3
và làm thế nào để cài đặt các gói đã tải về sau?
knocte

1
Đây là câu trả lời cập nhật nhất. Cảm ơn
KJ50

3
@knoctepip install path-to-downloaded-package
Anton Khodak

5
đã thử cách đây vài ngày và tôi nghĩ rằng nó vẫn cố gắng truy xuất các deps từ internet thay vì sử dụng các deps đã tải xuống; IIRC, tôi phải sử dụngsudo pip install <path-to-downloaded-package> --no-index --find-links `pwd`
knocte 30/11/16

3
Lưu ý rằng pip downloadcũng hỗ trợ -r requirements.txtđể bạn có thể dễ dàng tải về tất cả chúng từ một máy có kết nối Internet sau đó sao chép vào một máy offline và cài đặt như thế nào bình luận nêu trên
Hawkins

113

Các --download-cachetùy chọn nên làm những gì bạn muốn:

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

Tuy nhiên, khi tôi kiểm tra điều này, gói chính được tải xuống, lưu và cài đặt ok, nhưng các phần phụ thuộc được lưu với đường dẫn url đầy đủ như tên - hơi khó chịu, nhưng tất cả các tar.gztệp đều ở đó.

Các --downloadtùy chọn tải các gói chính và phụ thuộc của nó và không cài đặt bất kỳ trong số họ. ( Lưu ý rằng trước phiên bản 1.1 , --downloadtùy chọn này không tải xuống các phần phụ thuộc.)

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

Các pipphác thảo tài liệu hướng dẫn sử dụng --downloadcho cài đặt nhanh chóng & địa phương .


5
Thật tuyệt, điều đó đã thực sự hiệu quả - mặc dù tôi đã gắn thẻ một --no-installtùy chọn vào. Và bạn nói đúng về các tên tệp thú vị, nhưng ít nhất các tệp ở đó .
John C

lần trước tôi đã kiểm tra, --downloadtùy chọn tải xuống gói với các phụ thuộc.
Mohammad Niknam

3
--download-cache không được dùng nữa. sử dụng pip install --download <dir> <pkg>
ostler.c

18
pip install --downloadhiện không được dùng nữa và sẽ bị xóa khỏi pip 10. pip.pypa.io/en/latest/reference/pip_download/#overview . Sử dụng pip download somepackage.
Sнаđошƒаӽ

17
Cụ thể, số tương đương mới làpip download -d <dir> { -r requirements.txt | <packagename> }
rrauenza

56

Tôi luôn làm điều này để tải xuống các gói:

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

HOẶC LÀ

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

Và khi tôi muốn cài đặt tất cả các thư viện mà tôi vừa tải xuống, tôi thực hiện như sau:

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

HOẶC LÀ

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


Cập nhật

Ngoài ra, để cài đặt tất cả các gói trên một hệ thống, bạn có thể xuất tất cả chúng sang gói requirement.txtsẽ được sử dụng để nhập chúng trên hệ thống khác, chúng tôi thực hiện như sau:

pip freeze > requirement.txt

Sau đó, requirement.txtcó thể được sử dụng như trên để tải xuống hoặc làm điều này để cài đặt chúng từ requirement.txt:

pip install -r requirement.txt

THAM KHẢO: trình cài đặt pip


6

Trong phiên bản 7.1.2, pip tải xuống bánh xe của một gói (nếu có) với nội dung sau:

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

Sau đây tải xuống bản phân phối nguồn:

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

Chúng cũng tải xuống các phụ thuộc, nếu pip biết về chúng (ví dụ: nếu pip show packageliệt kê chúng).


Cập nhật

Như Anton Khodak đã lưu ý , pip downloadlệnh được ưu tiên hơn kể từ phiên bản 8. Trong các ví dụ trên, điều này có nghĩa là /path/to/downloaded/filecần phải cung cấp tùy chọn -d, vì vậy việc thay thế installbằng downloadcác lệnh sẽ hoạt động.


Tôi phải phát triển trong windows và triển khai trên RH7 mà không có kết nối internet nào cả. Vì vậy, tôi tải xuống các gói nguồn có --no-binary: all :. Tuy nhiên, việc này không thành công khi Thu thập django-pyodbc-azure == 2.0.4.1 vì gói này không có nguồn. Có cách nào để tải xuống mã nguồn hoặc nếu cái này không tồn tại, để tải xuống một phần không?
cwhisperer

6

Sử dụng pip download <package1 package2 package n> để tải xuống tất cả các gói bao gồm cả các gói phụ thuộc

Sử dụng pip install --no-index --find-links . <package1 package2 package n>để cài đặt tất cả các gói bao gồm cả các gói phụ thuộc. Nó lấy tất cả các tệp từ CWD. Nó sẽ không tải xuống bất cứ thứ gì


2

pip wheel là một lựa chọn khác mà bạn nên xem xét:

pip wheel mypackage -w .\outputdir

Nó sẽ tải xuống các gói và các phụ thuộc của chúng vào một thư mục (thư mục làm việc hiện tại theo mặc định), nhưng nó thực hiện bước bổ sung là chuyển đổi bất kỳ gói nguồn nào thành bánh xe.

Nó hỗ trợ thuận tiện các tệp yêu cầu:

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

Thêm --no-depsđối số nếu bạn chỉ muốn các gói được yêu cầu cụ thể:

pip wheel mypackage -w .\outputdir --no-deps

0

Tôi thích (RHEL) - pip download package==version --no-deps --no-binary=:all:


-1

cài đặt gói python ngoại tuyến

Đối với cửa sổ người dùng :

Để tải xuống một tệp, hãy mở cmd của bạn và theo sau:

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

pip download <*package name*>

gói và các phần phụ thuộc sẽ được tải xuống trong thư mục làm việc hiện tại.

Để cài đặt từ thư mục làm việc hiện tại:

đặt thư mục của bạn nơi bạn đã tải xuống làm cwd rồi làm theo các bước sau:

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

điều này sẽ tìm kiếm các phụ thuộc ở vị trí đó.


nếu bạn không chỉ định nền tảng, nó sẽ tải xuống các tệp cho hệ điều hành hiện tại. Do đó, điều này sẽ không hoạt động nếu bạn cài đặt các tệp đã tải xuống trên hệ điều hành khác
Prometheus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.