Pip ile yüklenen Python paketlerini nasıl tespit eder ve kaldırırım?


73

Yanlışlıkla Python paketlerini kullanmak pipyerine sistemime kurdum apt-get. Bunu iki şekilde yaptım:

  • Daha önceki sanalenv sürümlerini kullanarak, sanalenv --no-site-packagesoluştururken eklemeyi unuttum - ondan sonra çağırdığımda pip install, sanalenv yerine sisteme yüklü olan Python paketleri
  • doğru kurulumlu bir sanalenvde yazdım sudo pip install somepackage- sanalenv yerine sisteme yüklenen sudo

Bunu farkettim çünkü pip freezebir sanalenv'in dışına yazdım ve orada olmaması gereken bazı Python paketlerini gördüm . Şimdi sorum şu:

  • Sisteme hatalı yüklenmiş tüm Python paketlerini (yani pip freezelistede görünen , ancak yüklenmemiş olan Python paketlerini) nasıl tanımlarım apt-get?
  • onları nasıl kaldırabilirim?

Yanıtlar:


56

Ubuntu Oneiric (ve ben de yeni sürümler bekliyorum) pip paketleri /usr/local/lib/python2.7/dist-packagesve aptpaketler yükledim /usr/lib/python2.7/dist-packages. Yani sadece eski dizini ve sudo pip uninstallorada bulduğunuz her paketi kontrol edin .


12
Acımasız oldum ve yayınladım sudo rm -r /usr/local/lib/python2.7. Çok uzak çok iyi.
Apteryx,

@Apteryx, aynı şeyi yaptım /usr/local/lib/python3.5ve bir süre sonra update-notifier-commonPython 3 sixpaketinin eksik olması nedeniyle bir paket güncellemesi başarısız oldu . Ben yükleme sona erdi sixile sudo -H pip3 install six.
Alexey

2
@Apteryx tanrı seni lanet olası! Ben de aynısını yaptım ve şimdi bütün sistemim berbattı! ubuntu'daki hemen hemen her şey python'a dayanıyor!
yukashima huksay

Şimdi bir sürü kırık çalıştırılabilir kodum olduğunu farkettim/usr/local/bin/ (bir süre önce yeni çıkardım/usr/local/lib/python3.5 ve conda'ya geçtim ).
Alexey

22

Pip şu anda işletim sistemine ait bir şeyi kaldırmaya çalışan kaldırma komutlarını yoksayar. Eksik bir pakette olduğu gibi hata yapmaz. Yani, şimdi aşağıdaki işlemle kaldırabilirsiniz:

pip freeze > dump.txt

Herhangi bir -e"düzenlenebilir kurulum" satırını kaldırmak için dökülen dosyayı düzenleyin , ==işaretten sonraki her şey ( %s;==.*;;gvim cinsinden), yeni satırları boşluklar ( %s;\n; ;gvim cinsinden) ile değiştirin. Sonra sahip olmadığınız tüm paketleri kaldırabilirsiniz.

cat dump.txt | xargs sudo pip uninstall -y

Bu işlemi iki kez yapmak zorunda kaldım, çünkü birkaç paket de kuruldu ~/.local/lib.


1
Bu bana verilen cevap olmalı
Nam G VU

3
İstenmeyen bir tek gömlek isteyen var mı:sudo pip uninstall -y $(pip freeze | sed 's;==.*;;g' | tr '\n' ' ')
Benoit Duffez

4
Dikkatli! Bu, işletim sisteminizin özel bir sürümünü içerip göndermemesine bağlıdır pip. Archlinux'da pipsistem paketlerini mutlu bir şekilde kaldırır. Öte yandan, pipdebian jessie şikayetleri ve hataları:Not uninstalling virtualenv at /usr/lib/python3/dist-packages, owned by OS
Thomas G.

1
sudo'ya ihtiyacınız var mı? - bu kesinlikle kabul edilmiş bir cevap olmalıdır
Jonathan

6

AFAIK sudo pip installyüklenecek /usr/local/lib/pythonVERSION/dist-packages. sudo pip uninstallPaketleri sistemden kaldırmak için çalıştırmanız gerekir . O görünüyor pip freezepaket meta verileri arar ve pip yanı sıra virtualenvs dışında apt-get hem şey yüklü ie listelenir. -lSanal ortam içinde yalnızca bu sanal ortam için geçerli olan paketleri listeleme seçeneği vardır, ancak sanal ortam içinde olduğu gibi varsayılan durum olarak görünmektedir. Sanırım ilgili paketleri de silebilirsiniz /usr/local/lib/pythonVERSION/dist-packagesama sanırım çok uygun bir yöntem değil.


5

Pip aracılığıyla kurulan bir paketi kaldırmak için Terminal'i açmak için klavyenizdeki Ctrl+ Alt+ tuşlarına basın T. Açıldığında, aşağıdaki komutu çalıştırın.

pip uninstall < package-name >

Paketleri aramak için

pip search <package you want to search for>

Hangi Python paketlerinin pip tarafından yüklendiğini belirlemek için, freezekomut ile komutlar yüklenerek size kurulu paketlerin ve sürümlerinin bir listesi verilecektir. Tüm örnekleri kaldırmanızı ve sudo apt-getkomutu kullanarak yeniden yüklemenizi öneririm

sudo apt-get install python3

Hangi Python paketlerinin pip tarafından, hangisinin apt-get tarafından yüklendiğini nasıl belirleyebilirim? ilk etapta pip uninstallkullanırsam hala yapabilir miyim sudo pip install?
david.libremone

@ d3vid pip freezeyalnızca kurduğu paketleri gösterir (AFAICS).
Oli

1
@oli pip freeze, en azından kesin olarak, burada açıklanan diğer cevapların açıklandığı gibi apt tarafından yüklenmiş paketleri de listeler.
nealmcb

0

Disk alanını Python paketlerinden güvenle temizlemem gerekiyordu. Bu paketlerin tamamıyla temizlenmesine rağmen, Python sürümlerini de taşımam gerekiyordu, bu yüzden eski paketlere ihtiyacım yoktu. Tüm paket adlarımı almak, ilk 2 satırı atlamak ve ilk sütunu almak ve kullanıcı etkileşimi olmadan kaldırmak için aşağıdakileri kullandım:

pip list | awk 'NR>2 {print $1}' | xargs -I {} pip uninstall -y {}

-2

Bunun Homebrew ile bir ilgisi var. Homebrew'i yükleyip birkaç şey için kullanana kadar Mac Air'imde pyodbc ile ilgili herhangi bir sorun yaşamadım. Bu ipucunu , benim için işe yarayan bir çözümle biten github'ta buldum .

"Homebrew ürününüz varsa, ODBC başlıklarını kurmanız yeterlidir:

$ brew install unixodbc

ve "pip install pyodbc" komutunu tekrar çalıştırın.

Bu% 100 sorunu benim için çözdü ve sadece bir dakika sürdü. Bi dene.


belki bunu Ask Different'ya göndermelisin? apple.stackexchange.com
david.libremone
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.