2010-02-23 17 views
14

Mam skrypt, który tworzy virtualenv, instaluje w nim i następnie opcjonalnie klonuje repo o wartości git.PIP: Instalowanie tylko zależności

Teraz mam projekt, nad którym będę pracował, zainstalowany. Ale jego zależności nie są zainstalowane. Jak mogę zainstalować pip, aby zainstalować wszystkie zależności, tak jakbym wydał pip install MyApp?

EDYTUJ: Wyraźnie moje pytanie jest duplikatem this one.

Nie do końca pewny, ale wydaje mi się, że pip install -e . robi to, co chcę, bez zbytniego nakładania dodatkowych rzeczy. Wolałbym jednak, jeśli mój kod nie był połączony z site-packages.

+3

* Mam skrypt, który tworzy virtualenv, instaluje dystrybucji i pip w nim (...) *. Wiesz, że możesz zrobić wszystkie 3 rzeczy za pomocą 'pip -E VENV_DIR pip' jako pip domyślnie instaluje pip i rozpowszechnia w nowo utworzonym środowisku? –

+0

Fajna wskazówka! Nie używam już wspomnianego skryptu. – muhuk

Odpowiedz

16

W katalogu głównym pakietu wydającego pip install -e . instaluje zależności.

+0

To dość poważne skutki uboczne. '-e' instaluje się w trybie edycji, co oznacza, że ​​pakiet zostaje połączony z pakietami lokacji zamiast kopiowany. Spodziewam się, że to podejście spowoduje dziwne i subtelne problemy podczas próby zainstalowania pakietu na poważnie, zwłaszcza jeśli najpierw nie "odinstalujesz". –

9

Powinieneś użyć pliku wymagań pip.

Zasadniczo, umieść wszystkie wymagania, po jednym w każdej linii w pliku i przekazać, że do pip za pomocą polecenia

pip install -r requirements.txt 

Co więcej, jeśli masz standardowe środowisko, pip może faktycznie zrzucić taki plik z istniejących instalacjach wykorzystujących polecenie:

pip freeze 

można umieścić plik wytworzonego w ten sposób bezpośrednio do wymagań PIP i wywołać poprzednie polecenie ze skryptu wdrażania.

Całkiem fajnie, prawda? :)

+8

Fajnie, ale to nie odpowiada na moje pytanie. Nie szukam sposobu na zdefiniowanie zależności. Całkowicie i uważnie czytając pytania, pomaga w uzyskaniu prawidłowych odpowiedzi. – muhuk

+6

Czekaj, możesz umieścić wszystkie swoje zależności w pliku i poprosić o pip, aby zainstalować je wszystkie dla ciebie. Czy tego nie szukasz? Jeśli nie, nie zrozumiałem dokładnie twojego pytania. Nawet teraz. –

+1

Różnica polega na tym, że określone są "zależności" - w pliku requirements.txt (gdzie należy określić "myrepo == 1.0.1" lub cokolwiek innego) LUB w pliku setup.py pakietu w myrepo, który chcesz zainstalować. jeśli masz już repozytorium, to tylko instalowanie zależności może mieć sens. – andy

Powiązane problemy