2011-08-29 13 views
612

Tutaj jest problemJak pip pakiety instalacyjne zgodnie z wymaganiami.txt z lokalnego katalogu?

Mam requirements.txt, który wygląda tak:

BeautifulSoup==3.2.0 
Django==1.3 
Fabric==1.2.0 
Jinja2==2.5.5 
PyYAML==3.09 
Pygments==1.4 
SQLAlchemy==0.7.1 
South==0.7.3 
amqplib==0.6.1 
anyjson==0.3 
... 

Mam lokalnego katalogu archiwum zawierające wszystkie pakiety + inne.

Stworzyłem nową virtualenv z

bin/virtualenv testing 

po aktywowaniu go, próbowałem zainstalować pakiety według requirements.txt z lokalnego katalogu archiwum.

source bin/activate 
pip install -r /path/to/requirements.txt -f file:///path/to/archive/ 

mam jakieś wyjście, które wydaje się wskazywać, że instalacja jest w porządku

Downloading/unpacking Fabric==1.2.0 (from -r ../testing/requirements.txt (line 3)) 
    Running setup.py egg_info for package Fabric 
    warning: no previously-included files matching '*' found under directory 'docs/_build' 
    warning: no files found matching 'fabfile.py' 
Downloading/unpacking South==0.7.3 (from -r ../testing/requirements.txt (line 8)) 
    Running setup.py egg_info for package South 
.... 

Ale później kontrola wykazała brak pakietu jest prawidłowo zainstalowana. Nie mogę zaimportować pakietu i nie można go znaleźć w katalogu site-packages mojego virtualenv. Co poszło nie tak?

+3

Czy próbowałeś użyć '--no-index', aby nie patrzył nawet na PyPI? –

+1

Porzuciłeś komunikat o błędzie. Zasadniczo jest blisko dna. – bukzor

+0

Możesz użyć ścieżek plików zamiast nazw pakietów, oznacza to, że będziesz musiał zmienić plik requirements.txt, ale zachowaj komendę instalacji pip tym samym. – asafge

Odpowiedz

344

Działa to dla mnie:

$ pip install -r requirements.txt --no-index --find-links file:///tmp/packages 

--no-index - Ignoruj ​​indeks pakietów (tylko patrząc na --find-links URL zamiast).

-f, --find-links <URL> - Jeśli adres URL lub ścieżka do pliku html, przeanalizuj pod kątem linków do archiwów. Jeśli ścieżka lokalna lub adres URL file:// to katalog, poszukaj archiwów w wykazie katalogów.

+5

** Informacje o '--no-index' z polecenia pip install install **' --no-index' Zignoruj ​​indeks pakietu (zamiast tego patrz tylko na adresy URL '--find-links'). ** Informacje na temat '--find-links' z polecenia pip help install **' -f', '--find-links ' Jeśli adres URL lub ścieżka do pliku html, następnie przeanalizuj pod kątem linków do archiwów. Jeśli lokalna ścieżka lub plik: // url to katalog, poszukaj archiwów w spisie katalogów. – AWrightIV

+0

// To może być bardzo eleganckie rozwiązanie, szczególnie biorąc pod uwagę wieczną walkę ze sprzedażą: http://bitprophet.org/blog/2012/06/07/on-vendorizing/ –

+0

Dziękuję, że to działa dla mnie –

908

Czytałem powyższego sprawę jest to stara sprawa, ale to zupełnie nie rozwiązany i nadal na szczycie moich wynikach wyszukiwania Google tak oto odpowiedź, która działa dla wszystkich:

pip install -r /path/to/requirements.txt 
+163

Rozumiem, że ta odpowiedź nie odpowiada na pierwotne pytanie, ale odpowiada na pytanie, które miałem, gdy znalazłem to w Google ... – Jonathan

+0

Pierwotne pytanie się zmieniło - zauważ, jak teraz używa /path/to/requirements.txt . –

+7

@MikeLyons dość, że pytanie się nie zmieniło - nie ma historii edycji. –

95

Dla virtualenv aby zainstalować wszystkie pliki w pliku requirements.txt.

  1. cd do katalogu, w którym znajduje requirements.txt
  2. aktywować virtualenv
  3. run: pip install -r requirements.txt w swojej skorupie
+2

"pyenv virtualenv pip install requirements.txt nie działa" ze względu na Google ... – Jerad

11

Często będziemy chcieli szybko zainstalować od lokalnych archiwów, bez sondowanie PyPI.

Najpierw pobierz archiwum, które spełniają wymagania:

$ pip install --download <DIR> -r requirements.txt 

Następnie należy zainstalować przy użyciu –find-links i –no-index:

$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt 
+0

to jest świetne, działa jak urok! Tnx –

43

miałem podobny problem.Próbowałem to:

pip install -U -r requirements.txt 

(-U = zmiana gdyby już zainstalowany)

Problem jednak kontynuowane. Uświadomiłem sobie, że niektóre ogólne biblioteki do rozwoju zostały pominięte.

sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk 

Nie wiem, czy to ci pomoże.

17
pip install -r requirements.txt 

Aby uzyskać więcej informacji, proszę skorzystać z opcji pomocy.

pip install --help 

Możemy znaleźć opcję '-R'

-R, --requirement instalacji z danego pliku wymagań. Ta opcja może być wielokrotnie używana przez .

Dalsze informacje na niektóre powszechnie stosowane pip zainstalować opcje: (Jest to opcja pomocy w pip zainstalować komenda)

enter image description here

Również powyżej jest kompletny zestaw opcji. Proszę użyć instalacji pip --help, aby uzyskać pełną listę opcji.

9

Pracuję z wieloma systemami, które zostały zmuckowane przez programistów "podążając za wskazówkami znalezionymi w Internecie". Bardzo często twoje pip i twoje python nie patrzą na te same ścieżki/pakiety-witryny. Z tego powodu, kiedy napotykają nieparzystość zacznę w ten sposób:

$ python -c 'import sys; print(sys.path)' 
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages'] 

$ pip --version 
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7) 

To szczęśliwy układ.

Poniżej znajduje się niezadowolony system. (Lub przynajmniej to błogo nieświadomy system, który sprawia, że ​​inni się być nieszczęśliwy.)

$ pip --version 
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6) 

$ python -c 'import sys; print(sys.path)' 
['', '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/site-packages'] 

$ which pip pip2 pip3 
/usr/local/bin/pip 
/usr/local/bin/pip3 

Jest nieszczęśliwy ponieważ pip jest (python3.6 a) używając /usr/local/lib/python3.6/site-packages podczas python jest (python2.7 i) za pomocą /usr/local/lib/python2.7/site-packages

Kiedy chcesz się upewnić, mam instalacji wymagania do prawej pytona, ja to zrobić:

$ which -a python python2 python3 
/usr/local/bin/python 
/usr/bin/python 
/usr/local/bin/python2 
/usr/local/bin/python3 

$ /usr/bin/python -m pip install -r requirements.txt 

Słyszeliście: "Jeśli to nie jest zepsucie, nie próbujcie tego naprawiać". Wersja DevOps brzmi: "Jeśli nie złamiesz go i możesz obejść go, nie próbuj go naprawiać".

2

zainstalować wirtualne ENV Z PYTHON3:

miałem ten sam problem. Żadne z powyższych rozwiązań nie sprawdziło się u mnie. Znalazłem rozwiązanie.

Początkowo tworzę wirtualny env w następujący sposób:

sudo apt-get install python3-pip 
sudo pip3 install virtualenv 
virtualenv myenv 

to nie działa. Mogłem zainstalować plik requirements.txt, ale nie mogę zaimportować modułów. Tak próbowałem,

virtualenv -p python3 myenv 

Aktywuj środowiska przy użyciu:

source myenv/bin/activate 

Teraz zainstalowałem requirements.txt używając:

pip3 install -r requirements.txt 

Instalacja powiodła się i byłem w stanie importować moduły .

Powiązane problemy