2011-09-04 32 views
81

Nếu tôi muốn sử dụng lệnh pip để tải về một gói (và phụ thuộc của nó), nhưng giữ tất cả các file nén mà có được tải về (nói, django-socialregistration.tar.gz) - là có một cách để làm cái đó?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?

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

Trả lời

102

Tùy chọn --download-cache 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 thử nghiệm này, gói chính tải về, lưu lại và cài đặt ok, nhưng sự phụ thuộc đã được cứu với con đường url đầy đủ của họ như tên - một chút khó chịu, nhưng tất cả các tập tin tar.gz đã có.

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

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

Các tài liệu pip phác thảo bằng --download cho fast & local installs.

+4

Tốt, điều đó thực sự hiệu quả - mặc dù tôi đã gắn thẻ tùy chọn '--no-install'. Và bạn nói đúng về tên tập tin sôi nổi, nhưng ít nhất là các tệp có * đó *. –

+0

lần cuối tôi đã kiểm tra, tùy chọn '--download' tải xuống gói ** với ** phụ thuộc. –

+0

@Danial - vâng, kể từ phiên bản 1.1, '--download' hiện tải xuống các phụ thuộc. –

48

tôi luôn luôn làm điều này để tải về các gói:

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

HOẶC

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

Và khi tôi muốn cài đặt tất cả những thư viện Tôi vừa tải về, tôi làm điều này:

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

HOẶC

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


Cập nhật

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

pip freeze > requirement.txt

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

pip install -r requirement.txt

THAM KHẢO: pip installer

6

Trong phiên bản 7.1.2 pip tải các bánh xe của một gói (nếu có) như sau:

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

Các tải sau một bản phân phối nguồn:

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

Những tải về các phụ thuộc là tốt, nếu pip là nhận thức của họ (ví dụ: nếu pip show package liệt kê chúng).


Cập nhật

Theo ghi nhận của Anton Khodak, pip download lệnh được ưa chuộng kể từ phiên bản 8. Trong các ví dụ trên điều này có nghĩa rằng /path/to/downloaded/file cần phải được đưa ra với tùy chọn -d, vì vậy thay thế install với download công trình.

33

pip install --download khô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 download lệnh:

pip download <package-name> 
+0

và cách cài đặt các gói đã tải xuống sau? – knocte

+0

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

+1

@knocte 'pip cài đặt đường dẫn để tải xuống-gói ' –

1

Sử dụng pip download <package1 package2 package n> để tải về tất cả các gói bao gồm cả 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ả phụ thuộc. Nó nhận tất cả các tệp từ CWD. Nó sẽ không tải xuống bất cứ điều gì

Các vấn đề liên quan