Dizini python kurulumunuzdan silebilir misiniz, yoksa silmeniz gereken kalan dosyalar var mı?
Yanıtlar:
İ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 .
Silmeniz gereken yüklenen üç şey şunlardır:
Şimdi benim linux sistemimde bunlar yaşıyor:
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.
Zaman damgasına dayalı başka bir hack:
touch /tmp/tspython setup.py install --prefix=<PREFIX>find <PREFIX> -cnewer /tmp/ts | xargs rm -r| 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/* .
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.
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.
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.
Windows'ta Python için:
python -m pip uninstall "package_keyword"
uninstall **** (y/n)?
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.
Mac OSX'te, pathToPython / site-packages / altında bu 2 dizini manuel olarak silin : çalışacaktır:
örneğin, bir distutils kurulu projesi olan pyasn1'i kaldırmak için :
Site paketlerinizin nerede olduğunu öğrenmek için:
python -m site
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!