Pip kaldırma için onay istemini atla


93

Tüm web uygulaması bağımlılıklarımın sanal ortamıma yüklendiğinden emin olmak için süper kullanıcı ortamımdaki tüm django paketlerini kaldırmaya çalışıyorum.

sudo su
sudo pip freeze | grep -E '^django-' | xargs pip -q uninstall

Ancak pip, her paketin kaldırılmasını onaylamak istiyor ve pip için bir -yseçenek yok gibi görünüyor . Bir grup python modülünü kaldırmanın daha iyi bir yolu var mı? Mı rm -rf .../site-packages/gitmek için uygun bir yolu? Easy_install alternatifi var mı?

Alternatif olarak, oldukça mesela bu bağımlılıkları karşılamak için sistem piton modüllerinin güvenmek yerine virtualenv tüm bağımlılıkları yüklemek için kuvvet pip daha iyi olurdu pip --upgrade install, ancak bu bile zorlayarak eşit eski herhangi bir sistem modüllerini geçersiz kılmak için yüklü olması sürümlerini. Virtualenv'imi etkinleştirmeyi denedim pip install --upgrade -r requirements.txtve bu, sistem yolumda mevcut olanlar da dahil olmak üzere bağımlılıkları yüklüyor gibi görünüyor, ancak bunun sistem modüllerimin eski olmasından mı kaynaklandığından emin olamıyorum. Ve man pipbu davranışı garanti etmiyor gibi görünüyor (yani , sistem site paketlerinde zaten var olan bir paketin aynı sürümünü yüklemek ).

Yanıtlar:


204

pip 7.1.2 sürümünden başlayarak çalıştırabilirsiniz pip uninstall -y <python package(s)>

pip uninstall -y package1 package2 package3

veya dosyadan

pip uninstall -y -r requirements.txt

65

Pip bir --yes seçeneği İÇERMEZ (pip 1.3.1 sürümünden itibaren).

GEÇİCİ ÇÖZÜM: evet ona boru!

$ sudo ls  # enter pw so not prompted again
$ /usr/bin/yes | sudo pip uninstall pymongo

2
ahh, ne kadar basit. unix program hatırlatıcısı için teşekkürler. yesçok kullanışlı.
ocak

ama bunun işe yarayacağını sanmıyorum (bugün sistemimde denemek için çok çekingen). yes | sudo pip freeze | grep -E '^django-' | xargs pip -q uninstallçünkü yeses argüman / komut pip freezedeğil tarafından yutulurdu . xargspip uninstall
Ocak

3
pip freeze > all_to_uninstall.txt yes | pip uninstall -r all_to_uninstall.txt
Nick

8

Her paketi kaldırmak istiyorsanız requirements.txt,

pip uninstall -y -r requirements.txt

1

Alternatif olarak, bu bağımlılıkları karşılamak için sistem python modüllerine güvenmek yerine pip'i tüm bağımlılıkları virtualenv'e yüklemeye zorlamak daha iyi olur muydu?

Evet. Dahili sistem kurulu paketleri ile fazla uğraşmayın. Sistem paketlerinin çoğu, özellikle OS X'te (debian ve türetilmiş çeşitler bile) onlara çok fazla bağlıdır.

pip --upgrade install, ancak herhangi bir sistem modülünü geçersiz kılmak için eşit derecede eski sürümleri bile kurulmaya zorluyor.

Sistem paketinde halihazırda var olan venv içinde kurulu birkaç paket daha varsa, özellikle de farklı sürümlerse, bu büyük bir sorun olmamalıdır. Virtualenv'in tüm amacı budur.

Virtualenv'imi etkinleştirmeyi denedim ve sonra pip install --upgrade -r requirements.txt ve bu, sistem yolumda var olanlar da dahil olmak üzere bağımlılıkları yüklüyor gibi görünüyor, ancak bunun sistem modüllerimin eski olmasından mı kaynaklandığından emin olamıyorum. Ve man pip bu davranışı garanti etmiyor gibi görünüyor (yani, sistem site paketlerinde zaten var olan bir paketin aynı sürümünü yüklemek).

Hayır, --no-site-packagesbayrağı oluşturmak için kullanmadıysanız veya gerekli ve mevcut sürümler farklı olmadıkça, ana kurulumda zaten mevcut olan paketleri kurmaz ..


1

Lakshman Prasad haklıydı pip --upgradeve / veyavirtualenv --no-site-packages gidilecek yol buydu. Sistem genelinde python modüllerini kaldırmak kötüdür.

--upgradePip seçeneği zaten sistem ortamda mevcut olsa bile, sanal env'deki gerekli modülleri yüklemek etmez ve gerekli sürümü veya en son sürüm sistem versiyonu olarak aynı olsa bile.

pip --upgrade install

Ve sanal ortamı oluştururken --no-site-packages seçeneğinin kullanılması, eksik bağımlılıkların sistem yolunda eksik modüllerin varlığı ile muhtemelen maskelenememesini sağlar. Bu, bir modülün bir paketten diğerine taşınması sırasında sorunların ortaya çıkmasına yardımcı olur, örneğin pinax.apps.groups -> django-groups, özellikle sorun, templatetags dizinleri ve etiket tanımları için mevcut tüm modülleri arayan django'daki templatetags ifadelerini yükle olduğunda içinde.


0
pip install -U xxxx 

onaylamayı atlayabilir


2
Lütfen tam anlamlı cümleler yazmaya ve kod bölümlerini düzenlemeye çalışın.
YesThatIsMyName
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.