Yerel bir dizinden gereksinimler.txt dosyasına göre pip kullanarak paketleri nasıl yükleyebilirim?


1082

İşte sorun

Ben benzeyen bir gereksinimleri.txt var:

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
...

Tüm paketleri + diğerlerini içeren yerel bir arşiv dizinim var.

İle yeni bir virtualenv oluşturdum

bin/virtualenv testing

etkinleştirdikten sonra, paketleri yerel arşiv dizininden gereksinimler.txt'ye göre yüklemeye çalıştım.

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

Kurulumun iyi olduğunu gösteren bazı çıktılar aldım

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
....

Ancak daha sonra kontrol, paketin hiçbirinin düzgün şekilde takılmadığını ortaya koydu. Paketi içe aktaramıyorum ve sanal ağımın site paketleri dizininde hiçbiri bulunamadı. Peki yanlış giden neydi?


4
--no-indexPyPI'ya bakmamak için kullanmayı denediniz mi?
Hugo Tavares

2
Hata mesajını kırptınız. Genellikle dibe yakındır.
bukzor

Paket adları yerine dosya yollarını kullanabilirsiniz; bu, rules.txt dosyasını değiştirmeniz gerektiği, ancak pip install komutunun aynı kalması gerektiği anlamına gelir.
asafge

9
En çok oylanan cevap (Mike Lyons'ın cevabı) soruyu bile cevaplamıyor . Lütfen codeape'in doğru olan cevabını kabul eder misiniz?
Piotr Dobrogost

2
başka kimsenin bağlantıda bulunmadığını
MrMesees

Yanıtlar:


785

Bu benim için çalışıyor:

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

--no-index- Paket dizinini yoksay ( --find-linksbunun yerine yalnızca URL'lere bakar).

-f, --find-links <URL>- Bir html dosyasının URL'si veya yolu varsa, arşiv bağlantılarını ayrıştırın. file://Dizin olan bir yerel yol veya URL ise, dizin listesinde arşivleri arayın.


7
--no-indexKomut pip ile ilgili bilgiler --no-index Paket dizinini yoksay (sadece --find-linksURL'lere bakmak yerine) yüklemesine yardımcı olur . İle ilgili bilgiler --find-linkskomut pip yardımı yüklemek -f , --find-links <url>bir html dosyasına bir URL veya yol, daha sonra arşivler ilişkin bağlantıları ayrıştırmak edin. Yerel bir yol veya dosya: // url bu bir dizinse, dizin listesinde arşivleri arayın.
AWrightIV

1
//, Özellikle satıcılık ile sonsuz mücadele göz önüne alındığında çok zarif bir çözüm olabilir: bitprophet.org/blog/2012/06/07/on-vendorizing
Nathan Basanese

Bu konuda bir uyarı pip install <some_module>kullanmadan olabilir requirements.txtama bu güncelleme olmaz requirements.txt. Bir alternatif, bir docker'ı, bağımlılıkları yüklemek için çalıştırılan tüm pip install komutlarını listeleyecek şekilde güncellemek olabilir.
Ve işaretleri

python -m pip install -r requirements.txtaktive venv çevre içinde zaman bunu denedim . şeyler düzgün yüklü ama pip listesi yaptığımda bu paketleri, etkin venv olduğumda veya hatta venv devre dışı bıraktıktan sonra göstermez. Ayrıca bu paketleri kullanamazsınız. Burada neyin yanlış olduğunu bilmiyorum
Shreyan Mehta

pythonEtkinleştirilen ortamın python çalıştırılabilirine ( $ which python) atıfta bulunduğundan emin misiniz ?
codeape

1363

Yukarıdakileri okudum, bunun eski bir soru olduğunu fark ettim, ancak tamamen çözülmedi ve hala google arama sonuçlarımın en üstünde, bu yüzden herkes için çalışan bir cevap:

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

284
Bu cevabın orijinal soruyu ele almadığını fark ettim, ancak bunu Google'da bulduğumda soruya cevap verdi ...
Jonathan

Orijinal soru değişti - /path/to/requirements.txt dosyasını nasıl kullandığına dikkat edin.
Mike Lyons

8
@MikeLyons, sorunun aslında değişmediğinden oldukça emin - düzenleme geçmişi yok.
Mark Amery

48
isteyenler onlar türü bilmek için, komuta -r sadece "bir gereklilik dosyasından yükle" anlamına gelir ve --requirement için bir kısayol
Florent Chatterji

2
Bir paketi (örn. Django) yükseltmek istediğimde, gereksinimlerimi.txt dosyamdaki sürümü değiştirip çalıştırıyorum pip install -r /path/to/requirements.txt. Bu, değişikliği algılar, paketi yükseltir ve diğer her şeyi tek başına bırakır.
Kullanıcı

129

Virtualenv'in tüm dosyaları needs.txt dosyasına kurması için.

  1. cd gereksinimlerin bulunduğu dizinin bulunduğu dizine
  2. virtualenv'inizi etkinleştirin
  3. koşmak: pip install -r requirements.txt kabuğunda

3
Google adına "pyenv virtualenv pip install gereksinimleri.txt çalışmıyor"
Jerad

Diğer cevaplar yerine benim için çalışıyor, ty
Jo Eark

58

Benzer bir sorun yaşadım. Bunu denedim:

pip install -U -r requirements.txt 

(-U = önceden yüklenmişse güncelleme)

Ancak sorun devam etti. Gelişim için bazı genel kütüphanelerin kaçırıldığını fark ettim.

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

Bunun size yardımcı olup olmayacağını bilmiyorum.


32
pip install -r requirements.txt

Daha fazla bilgi için lütfen yardım seçeneğini kontrol edin.

pip install --help

'-R' seçeneğini bulabiliriz

-r, --requirement Verilen gereksinimler dosyasından yükleyin. Bu seçenek birden çok kez kullanılabilir.

Yaygın olarak kullanılan bazı pip kurulum seçenekleriyle ilgili daha fazla bilgi: (Bu, pip install komutundaki yardım seçeneğidir)

resim açıklamasını buraya girin

Ayrıca yukarıdaki seçeneklerin tamamı kümesidir. Seçeneklerin tam listesi için lütfen pip install --help kullanın.


26

Kısa cevap

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

veya başka bir biçimde:

python -m pip install -r /path/to/requirements.txt

açıklama

Burada, -rkısa biçimidir --requirementve pipverilen requirementsdosyadan yüklenmesini ister .

pipyüklemeye ancak requirementsdosyada listelenen tüm öğelerin kullanılabilirliğini kontrol ettikten sonra başlayacak ve bir requirementtanesi kullanılamıyor olsa bile yüklemeye başlamayacaktır .

Kullanılabilir paketleri kurmanın bir yolu, listelenen paketleri tek tek kurmaktır. Bunun için aşağıdaki komutu kullanın. Kullanılamayan paketler hakkında sizi bilgilendirmek için kırmızı renk uyarısı gösterilir.

cat requirements.txt | xargs -n 1 pip install

Yorumları (a ile başlayan satırlar #) ve boş satırları yok saymak için şunu kullanın:

cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install

20

Genellikle, PyPI'yi araştırmadan yerel arşivlerden hızlı bir kurulum isteyeceksiniz.

İlk olarak, gereksinimlerinizi karşılayan arşivleri indirin:

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

Ardından, –find-linksve öğelerini kullanarak yükleyin –no-index:

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

no such option: --download
Max Malysh

12

"İnternette buldukları talimatları takip ederek" geliştiriciler tarafından boğulmuş birçok sistemle çalışıyorum. Sizin pipve sizin pythonaynı yollara / site paketlerine bakmamanız son derece yaygındır . Bu nedenle, gariplikle karşılaştığımda bunu yaparak başlıyorum:

$ 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)

Bu mutlu bir sistem .

Aşağıda mutsuz bir sistem var . (Ya da en azından başkalarının mutsuz olmasına neden olan mutlu bir cahil sistemdir.)

$ 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

Öyle mutsuz çünkü pipkullanıyor (python3.6 ve) /usr/local/lib/python3.6/site-packagesiken pythonise (python2.7 ve) kullanılarak/usr/local/lib/python2.7/site-packages

Gereksinimleri doğru python'a yüklediğimden emin olmak istediğimde bunu yapıyorum:

$ 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

"Eğer kırılmazsa, tamir etmeye çalışmayın." Bunun DevOps sürümü, "Eğer onu kırmadıysanız ve etrafında çalışabiliyorsanız, düzeltmeye çalışmayın."


10

her şeyden önce sanal bir ortam yaratın

python 3.6 içinde

virtualenv --python=/usr/bin/python3.6 <path/to/new/virtualenv/>

Python 2.7'de

virtualenv --python=/usr/bin/python2.7 <path/to/new/virtualenv/>

daha sonra ortamı etkinleştirin ve gereksinim.txt dosyasında bulunan tüm paketleri yükleyin.

source <path/to/new/virtualenv>/bin/activate
pip install -r <path/to/requirement.txt>

9

Python 3 ile sanal env içine gereksinim.txt dosyasını yükleme:

Aynı sorunu yaşadım. Sanal ortam içinde gereksinimleri.txt dosyasını yüklemeye çalışıyordum. Çözümü buldum.

Başlangıçta, sanal ortamımı bu şekilde oluşturdum:

virtualenv -p python3 myenv

Aşağıdakileri kullanarak ortamı etkinleştirin:

source myenv/bin/activate

Şimdi gereksinimlerini kullanarak.txt yükledim:

pip3 install -r requirements.txt

Kurulum başarılı oldu ve modülleri alabildim.


Sanal ortam içinde gereksinimler dosyasını yüklerken bu sorunla karşılaştım. Şimdi sorunu çözmek için cevabımı değiştirdim
janu777

1
Windows üzerinde Anaconda Python 3.6 kullanarak, yapmam gereken virtualenv -p python myenv, myenv\Scripts\activate.bat,pip install -r requirements.txt
bdforbes

1
Aslında, tam tersine, bu sadece cevap gibi görünüyor yapar içinde yerel olarak tanımlı Deps yükleme hakkında soru cevap kısmı requirements.txtbir virtualenv için. Bir şey eksik olmadıkça? Her neyse, teşekkürler!
davnicwil

8

bunu dene

python -m pip install -r requirements.txt

7
pip install --user -r requirements.txt 

VEYA

pip3 install --user -r requirements.txt 

dosyanın --useriçinde belirtmek mümkün requirements.txtmü?
liang
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.