2012-11-09 19 views
5

Tôi có một vài dự án yêu cầu các phụ thuộc tương tự, và tôi không muốn có pip đi ra ngoài và DLing phụ thuộc từ web mọi lúc. Ví dụ tôi đang sử dụng gói norel-django mà sẽ xung đột với django tiêu chuẩn của tôi (phiên bản rdbms) nếu tôi cài đặt nó rộng hệ thống.Nhân bản virtualenv mà không cần tải xuống tất cả các gói một lần nữa trên cùng một máy

Có cách nào để tôi "sử dụng lại" các phụ thuộc đã tải xuống bằng pip không? Tôi có cần phải DL các tập tin tar.bz2 nguồn và làm cho một cấu trúc thư mục tương tự như của một kho lưu trữ pip hoặc một cái gì đó? Bất kỳ trợ giúp sẽ được đánh giá cao.

Cảm ơn

Trả lời

6

Thêm dòng sau vào $HOME/.pip/pip.conf:

[global] 
download_cache = ~/.pip/cache 

này cho pip để tải bộ nhớ cache trong ~/.pip/cache vì vậy nó sẽ không cần phải đi ra ngoài và tải chúng một lần nữa thời gian tới.

+0

Điều này thực sự làm gì? –

+0

Nó yêu cầu pip tải xuống bộ nhớ cache trong '~/.pip/cache' để nó không cần phải đi ra ngoài và tải xuống lại lần sau. Xin lỗi vì câu trả lời ngắn gọn; có vẻ như tôi tự giải thích cho tôi (nhưng có lẽ tôi chưa có đủ cà phê). –

+0

Trên thực tế, tìm kiếm google nhanh chóng trông giống như thế này thực hiện những gì tôi cần. –

0

nó trông giống như virtualenv có một lệnh virtualenv-clone, hoặc có lẽ virtualenvwrapper không?

Bất kể, có vẻ là một chút thư mục môi trường ảo sau đó chỉ cần copyin và dán tham gia nhiều hơn:

https://github.com/edwardgeorge/virtualenv-clone

thêm nó xuất hiện virtualenv có một lá cờ đó sẽ tạo điều kiện trong việc di chuyển virtualenv của bạn.

http://www.virtualenv.org/en/latest/#making-environments-relocatable

$ virtualenv --relocatable ENV từ doc virtualenv:

Điều này sẽ làm cho một số các tập tin được tạo ra bởi setuptools hoặc phân phối sử dụng đường dẫn tương đối, và sẽ thay đổi tất cả các kịch bản để sử dụng activate_this.py thay sử dụng vị trí của trình thông dịch Python để chọn môi trường.

Lưu ý: bạn phải chạy sau khi bạn đã cài đặt bất kỳ gói nào vào môi trường . Nếu bạn làm cho một môi trường relocatable, sau đó cài đặt một gói mới , bạn phải chạy virtualenv - relocatable một lần nữa.

Ngoài ra, điều này không làm cho gói của bạn đa nền tảng. Bạn có thể di chuyển thư mục xung quanh, nhưng nó chỉ có thể được sử dụng trên các máy tính khác tương tự . Một số khác biệt môi trường đã biết có thể gây ra sự khác biệt về môi trường có thể gây ra không tương thích: một phiên bản khác nhau của Python, khi một nền tảng sử dụng UCS2 cho đại diện unicode bên trong của nó và sử dụng khác UCS4 (tùy chọn biên dịch), thay đổi nền tảng rõ ràng như Windows so với Linux, hoặc Intel so với ARM và nếu bạn có thư viện liên kết với thư viện C trên hệ thống, nếu các thư viện C đó nằm ở một nơi khác nhau (hoặc các phiên bản khác nhau hoặc bố cục khác nhau ).

Nếu bạn sử dụng cờ này để tạo môi trường, hiện tại, tùy chọn --system-site-packages sẽ được ngụ ý.

+0

Tôi không cần phải di chuyển thư mục trang web-gói nhiều như chỉ có một bản sao của những gì được cài đặt trong có cài đặt trong venv mới của tôi. Tôi biết tôi có thể làm một pip đóng băng và nhập vào venv mới của tôi nhưng điều đó vẫn đòi hỏi tôi phải đi ra ngoài trên web, mà cho một cái gì đó giống như một hộp dev có vẻ như nó có thể là cồng kềnh và chậm kể từ khi tôi biết tôi đã có các gói trên máy ở đâu đó. –

+0

@ PaulJ.Warner, tôi đã cố gắng cung cấp một số gợi ý về cách bạn có thể sao chép virtualenv của bạn để các gói sẽ không được cài đặt lại – dm03514

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