Czy możesz po prostu usunąć katalog z instalacji Pythona, czy są jakieś pliki, które musisz usunąć?
92
Różni się w zależności od opcji, które przekazujesz install
i zawartości plików konfiguracyjnych distutils w systemie / w pakiecie. Nie wierzę, że jakiekolwiek pliki są modyfikowane poza katalogami określonymi w ten sposób.
Warto zauważyć, że w distutils nie ma obecnie polecenia odinstalowania .
Warto również zauważyć, że usunięcie pakietu / jajka może powodować problemy z zależnościami - narzędzia takie jak easy_install
próba złagodzenia takich problemów.
Trzy rzeczy, które zostaną zainstalowane, które będziesz musiał usunąć, to:
Teraz w moim systemie Linux żyją one w:
Ale w systemie Windows jest bardziej prawdopodobne, że znajdują się one całkowicie w katalogu dystrybucyjnym Pythona. Nie mam pojęcia o OSX, poza tym, że wolę podążać za wzorcem Linuksa.
źródło
Inny hack oparty na znacznikach czasu:
touch /tmp/ts
python setup.py install --prefix=<PREFIX>
find <PREFIX> -cnewer /tmp/ts | xargs rm -r
źródło
| xargs rm -r
. Zalecam ręczne przejrzenie każdego pliku . Na ext4 (i innych systemach plików)find
spowoduje to również wyświetlenie wszystkich folderów . Jeśli Twój prefiks to/usr
, zamierzasz usunąć/usr/*
.Tak, można bezpiecznie po prostu usunąć wszystko, co zainstalował distutils. Dotyczy to zainstalowanych folderów lub plików .egg. Oczywiście wszystko, co zależy od tego kodu, nie będzie już działać.
Jeśli chcesz, aby działał ponownie, po prostu zainstaluj go ponownie.
Nawiasem mówiąc, jeśli używasz distutils, rozważ również użycie funkcji wielu wersji. Pozwala na zainstalowanie wielu wersji dowolnego pojedynczego pakietu. Oznacza to, że nie musisz usuwać starej wersji pakietu, jeśli chcesz po prostu zainstalować nowszą wersję.
źródło
W Ubuntu 12.04 odkryłem, że jedyne miejsce, w którym domyślnie musisz szukać, to pod
/usr/local/lib/python2.7/
I po prostu usuń powiązany folder i plik, jeśli taki istnieje!
źródło
Jeśli jest to do celów testowych i / lub programistycznych, setuptools ma plik Develop polecenie które aktualizuje się za każdym razem, gdy wprowadzasz zmianę (więc nie musisz odinstalowywać i ponownie instalować za każdym razem, gdy wprowadzasz zmianę). Możesz również odinstalować pakiet za pomocą tego polecenia.
Jeśli to zrobisz, wszystko, co zadeklarujesz jako skrypt, zostanie pozostawione jako plik pokutujący.
źródło
install --record
+xargs rm
usuwa wszystkie pliki i pozostawia puste katalogi.
To nie jest idealne rozwiązanie, powinno wystarczyć, aby uniknąć konfliktów dotyczących pakietów.
Następnie możesz zakończyć zadanie ręcznie, jeśli chcesz, czytając
files.txt
, lub być odważniejszym i zautomatyzować również usuwanie pustych katalogów.Bezpiecznym pomocnikiem byłoby:
Testowano w Pythonie 2.7.6, Ubuntu 14.04.
źródło
dla Pythona w Windows:
python -m pip uninstall "package_keyword" uninstall **** (y/n)?
źródło
Właśnie odinstalowałem pakiet Pythona i chociaż nie jestem pewien, czy zrobiłem to idealnie, jestem dość pewny.
Zacząłem od uzyskania listy wszystkich plików związanych z Pythonem, uporządkowanych według daty, przy założeniu, że wszystkie pliki w moim pakiecie będą miały mniej więcej ten sam znacznik czasu, a żadne inne pliki nie będą.
Na szczęście mam zainstalowanego Pythona pod
/opt/Python-2.6.1
; gdybym używał Pythona, który jest dostarczany z moją dystrybucją Linuksa, musiałbym przeszukać wszystko/usr
, co zajęłoby dużo czasu.Następnie przejrzałem tę listę i zauważyłem z ulgą, że wszystko, co chciałem zrobić, składało się z jednego katalogu
/opt/Python-2.6.1/lib/python2.6/site-packages/module-name/
i jednego pliku/opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.egg-info
.Więc właśnie je usunąłem.
Oto jak otrzymałem posortowaną według daty listę plików:
find "$@" -printf '%T@ ' -ls | sort -n | cut -d\ -f 2-
(Nawiasem mówiąc, myślę, że to musi być GNU „znajdź”; smak, który dostajesz w OS X, nie zna „-printf '% T @'”)
Używam tego cały czas.
źródło
W systemie Windows 7
Panel sterowania -> Programy -> Odinstaluj
, następnie
wybierz pakiet Pythona do usunięcia.
źródło
W systemie Mac OSX ręcznie usuń te 2 katalogi ze ścieżkiToPython / site-packages / będą działać:
na przykład, aby usunąć pyasn1 , który jest projektem zainstalowanym przez distutils:
Aby dowiedzieć się, gdzie są twoje pakiety witryn:
źródło
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.
Następnie wpisuję:
conda uninstall entrypoints pip install --upgrade pycodestyle pip install nuscenes-devkit
Gotowe!
źródło