2012-11-09 10 views
5

Mam kilka projektów, które wymagają podobnych zależności, i nie chcę mieć wychodzącej pętli i DLing zależności od sieci za każdym razem. Na przykład używam pakietu norel-django, który byłby w konflikcie z moją standardową wersją django (wersja rdbms), jeśli zainstalowałem system.Replikacja virtualenv bez pobierania wszystkich pakietów ponownie na tym samym komputerze

Czy istnieje sposób, aby "ponownie wykorzystać" pobrane zalety za pomocą pip? Czy muszę utworzyć plik źródłowy tar.bz2 i utworzyć strukturę folderów podobną do archiwum pip? Każda pomoc będzie doceniona.

Dzięki

Odpowiedz

6

Dodaj do $HOME/.pip/pip.conf następujące:

[global] 
download_cache = ~/.pip/cache 

Mówi pip do pobrania cache w ~/.pip/cache więc nie trzeba będzie wychodzić i pobrać je ponownie następnym razem.

+0

Co to właściwie robi? –

+0

Powoduje, że pip pobiera zapisy w pamięci podręcznej w '~/.pip/cache', więc nie będzie musiał wychodzić i pobierać ich następnym razem. Przeprosiny za lakoniczną odpowiedź; wydaje mi się to trochę objaśniające (ale może nie miałem jeszcze wystarczająco kawy). –

+0

Właściwie szybkie wyszukiwanie w Google wygląda tak, jak powinno. –

0

to wygląda virtualenv ma polecenie virtualenv-clone, czy może virtualenvwrapper robi?

Niezależnie od tego, że wygląda się trochę bardziej zaangażowani wtedy właśnie copyin i wklejanie katalogi wirtualne środowisko:

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

dodatkowo wydaje się virtualenv ma flagę, która ułatwi w ruch virtualenv.

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

$ virtualenv --relocatable ENV z virtualenv Doc:

uczyni to niektóre z plików utworzonych przez setuptools lub dystrybucji używać względnych ścieżek, i zmieni wszystkie skrypty używać activate_this.py zamiast korzystania z lokalizacji interpretera Pythona w celu wybrania środowiska.

Uwaga: należy uruchomić po zainstalowaniu pakietów w środowisku . Jeśli stworzysz środowisko do przeniesienia, następnie zainstaluj nowy pakiet , musisz ponownie uruchomić virtualenv --relocatable.

Co więcej, nie powoduje to, że Twoje pakiety są na różnych platformach. Możesz przenieść katalog o numerze , ale można go używać tylko na innych podobnych komputerach . Niektóre znane różnice środowiskowe, które mogą powodować niezgodności : inna wersja języka Python, gdy jedna platforma używa UCS2 do reprezentacji wewnętrznego Unicode, a inna używa UCS4 (opcja kompilacji), oczywiste zmiany platformy, takie jak Windows vs. Linux, lub Intel vs. ARM i jeśli masz biblioteki, które wiążą się z bibliotekami C w systemie, jeśli te biblioteki C znajdują się gdzieś różne (albo różne wersje, albo inny układ systemu plików ).

Jeśli użyjesz tej flagi do utworzenia środowiska, domyślnie zostanie zastosowana opcja - system-site-packages.

+0

Nie muszę przenosić folderu site-packages tak bardzo, jak tylko mam duplikat tego, co jest zainstalowane w nim zainstalowanym w moim nowym venv. Wiem, że mógłbym zamrozić pips i zaimportować go do mojego nowego venv, ale to nadal wymaga ode mnie wyjścia w sieci, co dla czegoś takiego jak dev box wydaje się być uciążliwe i powolne, ponieważ wiem, że już mam pakiety maszyna gdzieś. –

+0

@ PaulJ.Warner, starałem się dostarczyć kilka sugestii na temat sposobów klonowania twojego virtualenv tak, aby pakiety nie zostały ponownie zainstalowane – dm03514

Powiązane problemy