Dağıtımları kullanarak kurulan bir python paketini nasıl kaldırırsınız?


92

Dizini python kurulumunuzdan silebilir misiniz, yoksa silmeniz gereken kalan dosyalar var mı?

Yanıtlar:


45

İlettiğiniz seçeneklere ve sistemdeki / paketteki distutils yapılandırma dosyalarınıninstall içeriğine göre değişir . Bu şekilde belirtilen dizinlerin dışında hiçbir dosyanın değiştirilmediğine inanmıyorum.

Dikkat çekici bir şekilde, dağıtımların şu anda bir kaldırma komutu yoktur .

Bir paketi / yumurtayı silmenin bağımlılık sorunlarına neden olabileceği de dikkate değerdir - bu easy_installtür sorunları hafifletme girişimi gibi yardımcı programlar .


4
Sorunun kalan dosyalar kısmını doğrudan ele almak için lütfen bunu güncelleyebilir misiniz?
S.Lott

Yaptığımı sanıyordum - distutils yapılandırması tarafından belirtilen dizinlerin dışında hiçbir dosya oluşturulmaz ve bayrakları yükler, bu nedenle bu dizinlerde "kalan" dosyalar var olur. Paketten pakete değişir.
cdleary

2
@cdleary: teşekkürler, ama umuyordum ki cevabınızı uzun bir yorum dizisi eklemeyip açıklığa kavuşturacak ve güçlendireceksiniz.
S.Lott

2
@ S.Lott: Üzgünüm ama cevabın hangi kısmında açıklama yapmak istediğinizi bilmiyorum - daha spesifik olabilir misiniz?
cdleary

1
msg139773 Tarih: 2011-07-04 14:35 distutils2 / Packaging artık bir kaldırma işlevi ve bir pysetup kaldırma komutu sağlamaktadır.
Edward

19

Silmeniz gereken yüklenen üç şey şunlardır:

  1. Paketler / modüller
  2. Kodlar
  3. Veri dosyaları

Şimdi benim linux sistemimde bunlar yaşıyor:

  1. /usr/lib/python2.5/site-packages
  2. / usr / bin
  3. / usr / paylaş

Ancak bir Windows sisteminde tamamen Python dağıtım dizini içinde olma olasılıkları daha yüksektir. Linux modelini takip etme olasılığı dışında OSX hakkında hiçbir fikrim yok.


14

Zaman damgasına dayalı başka bir hack:

  1. Bir bağlantı oluşturun: touch /tmp/ts
  2. Kaldırılacak paketi yeniden yükleyin: python setup.py install --prefix=<PREFIX>
  3. Bağlantı dosyasından daha yeni olan dosyaları kaldırın: find <PREFIX> -cnewer /tmp/ts | xargs rm -r

1
-1. Hoşlanmadım | xargs rm -r. Her dosyanın üzerinden manuel olarak geçmenizi öneririm . Ext4'te (ve diğer dosya sistemlerinde), bu findda tüm klasörleri listeleyecek . Önekiniz /usröyleyse , sileceksiniz/usr/* .
Mateen Ulhaq

8

Evet, yüklenen herhangi bir şeyi basitçe silmek güvenlidir. Bu, yüklü klasörler veya .egg dosyaları için geçerlidir. Doğal olarak bu koda bağlı olan hiçbir şey artık çalışmayacaktır.

Tekrar çalışmasını istiyorsanız, yeniden kurmanız yeterlidir.

Bu arada, dağıtım kullanıyorsanız, çoklu sürüm özelliğini de kullanmayı düşünün. Herhangi bir tek paketin birden çok sürümünün kurulu olmasını sağlar. Bu, yalnızca daha yeni bir sürüm yüklemek istiyorsanız, bir paketin eski bir sürümünü silmenize gerek olmadığı anlamına gelir.


5

Ubuntu 12.04'te, bakmanız gereken tek yerin varsayılan olarak altında olduğunu buldum.

/usr/local/lib/python2.7/

Ve varsa, ilgili klasörü ve dosyayı kaldırmanız yeterlidir!


Bazen / usr / lib / python <2.7 / 3.6> içinde
Vineet

4

Bu test ve / veya geliştirme amaçlıysa , setuptools her değişiklik yaptığınızda güncellenen bir geliştirme komutuna sahiptir (böylece her değişiklik yaptığınızda kaldırıp yeniden yüklemeniz gerekmez). Ve bu komutu kullanarak da paketi kaldırabilirsiniz.

Bunu kullanırsanız, komut dosyası olarak ilan ettiğiniz her şey geride kalan bir dosya olarak bırakılacaktır.


4

install --record + xargs rm

sudo python setup.py install --record files.txt
xargs sudo rm -rf < files.txt

tüm dosyaları siler ve geride boş dizinler bırakır.

Bu ideal değil, paket çatışmalarını önlemek için yeterli olmalı.

Ve daha sonra, okuyarak işi manuel olarak bitirebilir files.txtveya daha cesur davranıp boş dizin kaldırmayı otomatikleştirebilirsiniz.

Güvenli bir yardımcı:

python-setup-uninstall() (
  sudo rm -f files.txt
  sudo python setup.py install --record files.txt && \
  xargs rm -rf < files.txt
  sudo rm -f files.txt
)

Python 2.7.6, Ubuntu 14.04'te test edilmiştir.


3

Windows'ta Python için:

python -m pip uninstall "package_keyword"
uninstall **** (y/n)?

Paket dağıtımlar kullanılarak yüklenmişse çalışmaz.
Kefeng91

2

Ben sadece bir piton paketi kaldırıldı, ama ben değilim rağmen bazı Öyle mükemmel yaptım, makul eminim.

Paketimdeki tüm dosyaların aşağı yukarı aynı zaman damgasına sahip olacağı ve başka hiçbir dosyanın olmayacağı varsayımıyla python ile ilgili tüm dosyaların tarihe göre sıralanmış bir listesini alarak başladım .

Şans eseri, altında python kurulu var /opt/Python-2.6.1; Linux dağıtımımla birlikte gelen Python'u kullanıyor olsaydım, hepsini taramak zorunda kalırdım /usr, ki bu uzun zaman alırdı.

Sonra bu listeyi inceledim ve bombalamak istediğim her şeyin bir dizin /opt/Python-2.6.1/lib/python2.6/site-packages/module-name/ve bir dosyadan oluştuğunu rahatlıkla fark ettim /opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.egg-info.

Ben de onları sildim.

Tarih sıralı dosya listesini şu şekilde edindim:

find "$@" -printf '%T@ ' -ls | sort -n | cut -d\ -f 2-

(Bence bu GNU "bul" olmalı; OS X'te aldığınız lezzet "-printf '% T @" "hakkında bir şey bilmiyor)

Bunu her zaman kullanırım.


2

Windows 7 için,

Denetim Masası -> Programlar -> Kaldır

, sonra

Kaldırılacak python paketini seçin.


@Mauricio Listede eski sürümleri göremiyorum ancak site paketlerinde yumurta dosyalarını görebiliyorum. Bu bir sorun mu?

1

Mac OSX'te, pathToPython / site-packages / altında bu 2 dizini manuel olarak silin : çalışacaktır:

  • {paket ismi}
  • {packageName} - {version} -info

örneğin, bir distutils kurulu projesi olan pyasn1'i kaldırmak için :

  • rm -rf lib / python2.7 / site paketleri / pyasn1
  • rm -rf lib / python2.7 / site-paketleri / pyasn1-0.1.9-py2.7.egg-info

Site paketlerinizin nerede olduğunu öğrenmek için:

python -m site

1
Beklendiği gibi çalışıyor.
c1377554

-1

ERROR: flake8 3.7.9 has requirement pycodestyle<2.6.0,>=2.5.0, but you'll have pycodestyle 2.3.1 which is incompatible. ERROR: nuscenes-devkit 1.0.8 has requirement motmetrics<=1.1.3, but you'll have motmetrics 1.2.0 which is incompatible. Installing collected packages: descartes, future, torch, cachetools, torchvision, flake8-import-order, xmltodict, entrypoints, flake8, motmetrics, nuscenes-devkit Attempting uninstall: torch Found existing installation: torch 1.0.0 Uninstalling torch-1.0.0: Successfully uninstalled torch-1.0.0 Attempting uninstall: torchvision Found existing installation: torchvision 0.2.1 Uninstalling torchvision-0.2.1: Successfully uninstalled torchvision-0.2.1 Attempting uninstall: entrypoints Found existing installation: entrypoints 0.2.3 ERROR: Cannot uninstall 'entrypoints'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

Sonra yazıyorum:

conda uninstall entrypoints pip install --upgrade pycodestyle pip install nuscenes-devkit

Bitti!


1
Lütfen sadece konsol çıktısını göstermek yerine ne yaptığınızı ve neden yaptığınızı açıklamaya çalışın.
Headhunter Xamd
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.