Zgodnie z tą odpowiedzią , apt-get
instaluje pakiety w całym systemie (z kanoniczne), i tylko pip
można zainstalować pakiety w virtualenv (od PyPI).
Jednak muszę zainstalować pakiet w virtualenv, który jest dostępny tylko przez apt-get
, tj. Nie jest hostowany przez Pypi.
Jak mogę to zrobić?
apt
software-installation
pip
rzymski
źródło
źródło
Odpowiedzi:
Inną alternatywą jest pobranie pliku
apt-get download
, wyodrębnienie godpkg -x
i przeniesienie wyodrębnionych plików do virtualenv:Przykład:
załóżmy, że skutkuje to:
Następnie użyj dpkg, aby wyodrębnić część danych pliku .deb:
W nowo utworzonym
./xyz-tmp
katalogu masz teraz wszystkie pliki, które zostałyby zainstalowane/
(root), gdybyś go użyłapt-get install
.Załóżmy, że są:
Nadal musisz zmapować podkatalogi (np.
dist-packages
Vs.site-packages
), a następnie możesz przenieść pliki do swojego virtualenv (zakładając virtualenv/home/user/.virtualenvs/py27
):W porównaniu z moją poprzednią odpowiedzią, to podejście ma tę zaletę, że nie musisz badać, które pliki zostały zainstalowane, ponieważ możesz je zobaczyć w katalogu rozpakowywania. Nadal wymaga mapowania katalogów między rozpakowanym archiwum a virtualenv.
źródło
Wszystko, co jest potrzebne do virtualenv, to obecność plików pakietu w poddrzewie virtualenv. Tak długo, jak możesz określić, które pliki zostały zainstalowane w systemie Python za pomocą apt-get, możesz skopiować je do virtualenv. Obejmuje to pliki w katalogu pakietów serwisu, a także w innych miejscach poddrzewa Pythona (np. Skrypty).
Hipotetyczny przykład:
Załóżmy, że instaluje pakiet o nazwie „xyz” w systemie Python 2.7, możesz otrzymać:
Skopiuj pliki związane z pakietem „xyz” na virtualenv (zakładając virtualenv
/home/user/.virtualenvs/py27
):Trudność polega na (1) w określeniu, które pliki należą do konkretnego pakietu, oraz (2) w odwzorowaniu odpowiednich podkatalogów między systemem Python a virtualenv (np.
dist-packages
Vs.site-packages
w powyższym przykładzie).Jeśli ktoś ma z tym więcej doświadczenia, prosimy o komentarz.
źródło