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.