Przypadkowo zainstalowałem pakiety Pythona w moim systemie, używając pip
zamiast apt-get
. Zrobiłem to na dwa sposoby:
- używając starszej wersji virtualenv, zapomniałem dołączyć
--no-site-packages
podczas tworzenia virtualenv - potem, gdy zadzwoniłempip install
, pakiety Pythona były instalowane w systemie zamiast virtualenv - w poprawnie skonfigurowanym virtualenv wpisałem
sudo pip install somepackage
- sudo zainstalowane w systemie zamiast virtualenv
Zdarzyło mi się to zauważyć, ponieważ pisałem na maszynie pip freeze
poza virtualenv i zauważyłem listę pakietów Pythona, których nie powinno tam być. Więc teraz moje pytanie brzmi:
- Jak mogę zidentyfikować wszystkie pakiety Pythona, które zostały błędnie zainstalowane w systemie (to znaczy pakiety Pythona, które pojawiają się na
pip freeze
liście, ale nie zostały zainstalowaneapt-get
)? - jak je usunąć?
python
package-management
pip
david.libremone
źródło
źródło
sudo rm -r /usr/local/lib/python2.7
. Na razie w porządku./usr/local/lib/python3.5
, a po pewnym czasie aktualizacjaupdate-notifier-common
pakietu nie powiodła się z powodu brakusix
pakietu Python 3 . Skończyło się instalowaniesix
zsudo -H pip3 install six
./usr/local/bin/
(jakiś czas temu właśnie usunąłem/usr/local/lib/python3.5
i zmieniłem na conda ).Pip obecnie ignoruje polecenia odinstalowywania, które próbują odinstalować coś, co należy do systemu operacyjnego. Nie powoduje błędu, tak jak w przypadku brakującego pakietu. Teraz możesz odinstalować za pomocą następującego procesu:
Edytuj plik zrzucony, aby usunąć wszystkie
-e
wiersze „edytowalnej instalacji”, wszystko po==
znaku (%s;==.*;;g
w vimie), zamień nowe linie na spacje (%s;\n; ;g
w vimie). Następnie możesz odinstalować wszystkie niepotrzebne pakiety za pomocąTę procedurę musiałem wykonać dwa razy, ponieważ zainstalowano także kilka pakietów
~/.local/lib
.źródło
sudo pip uninstall -y $(pip freeze | sed 's;==.*;;g' | tr '\n' ' ')
pip
. Na archlinuxpip
szczęśliwie odinstalowuje pakiety systemowe. Z drugiej strony,pip
na temat debiana jessie narzeka i popełnia błędy:Not uninstalling virtualenv at /usr/lib/python3/dist-packages, owned by OS
AFAIK
sudo pip install
zostanie zainstalowany/usr/local/lib/pythonVERSION/dist-packages
. Musisz uruchomić,sudo pip uninstall
aby odinstalować pakiety w całym systemie. Wygląda na to, żepip freeze
szuka metadanych pakietu i wyświetli listę wszystkich zainstalowanych, tj. Zarówno z pip, jak i apt-get poza virtualenvs. W-l
środowisku wirtualnym istnieje możliwość wylistowania pakietów mających zastosowanie tylko do tego środowiska wirtualnego, ale wydaje się, że jest to również domyślny przypadek w środowisku wirtualnym. Myślę, że możesz również usunąć powiązane pakiety,/usr/local/lib/pythonVERSION/dist-packages
ale chyba niezbyt wygodna metoda.źródło
Aby usunąć pakiet zainstalowany za pomocą pip, po prostu naciśnij Ctrl+ Alt+ Tna klawiaturze, aby otworzyć Terminal. Kiedy się otworzy, uruchom poniższe polecenie.
Aby wyszukać paczki
Aby ustalić, które pakiety Python zostały zainstalowane przez pip, za pomocą
freeze
polecenia, które wyświetli listę zainstalowanych pakietów i ich wersji. Sugeruję usunięcie wszystkich instancji i ponowną instalację za pomocąsudo apt-get
poleceniaźródło
pip uninstall
jeśli użyłemsudo pip install
?pip freeze
pokazuje tylko zainstalowane pakiety (AFAICS).Musiałem bezpiecznie wyczyścić miejsce na dysku z pakietów Pythona. Chociaż jest to całkowite usunięcie pakietów, musiałem również przenieść wersje Pythona, więc nie potrzebowałem starych pakietów. Użyłem następującego polecenia, aby uzyskać wszystkie moje nazwy pakietów, pominąć pierwsze 2 wiersze, pobrać pierwszą kolumnę i odinstalować bez interakcji użytkownika:
źródło
Ma to coś wspólnego z Homebrew. Nie miałem problemów z pyodbc na moim Macu Air, dopóki nie zainstalowałem Homebrew i użyłem go do kilku rzeczy. Znalazłem ten wątek na githubie, który kończy się rozwiązaniem, które działało dla mnie.
„Jeśli masz Homebrew, po prostu zainstaluj nagłówki ODBC:
i ponownie uruchom „pip install pyodbc”. ”
To w 100% rozwiązało problem i zajęło mi tylko chwilę. Spróbuj.
źródło