Usuń i ponownie zainstaluj Python na komputerze Mac - czy mogę ufać tym starym referencjom?

36

Jestem nowy na Macu i najwyraźniej popełniłem jakiś błąd. Uczyłem się pytona, poprzez samouczki, a między Homebrew, Pip i XCode jakoś wszystkie moje wersje są mieszane. Pip3 wskazuje na python2, więc wszystkie moje testy python3 kończą się niepowodzeniem itp.

Badam, jak bezpiecznie usunąć wszystkie wersje, a następnie strzelać do czystej instalacji (homebrew?), Ale jestem trochę zdenerwowany.

Znalazłem kilka doskonałych linków:

Najwyraźniej niczego nie dotyka się w /systemkatalogu głównym i zasadniczo wszystko inne zostaje usunięte. Denerwuję się tym, że te linki są dość stare. (sześć lat! +) Nie jestem pewien, czy naprawdę im ufam, czy nie.

Czy ktoś tu ostatnio był? Czy mogę ufać zamieszczonym powyżej linkom do postów? Jak wyczyścić ten bałagan w wersji Python? Uwaga: używam MacOS Sierra (10.12.5)

zipzit
źródło

Odpowiedzi:

34

Skończyło się na tym, że usunąłem wszystkie instalacje Pythona i ponownie zainstalowałem rzeczy przez Homebrew.

  1. which python---> /Library/Frameworks/Python.framework/Versions/2.7/bin/python Usuń cały katalog Python.framework z /Library/Frameworks.
  2. which python3---> /usr/local/bin/python3 Usuń cały katalog python3.
  3. Trochę się denerwowałem z powodu dowiązań symbolicznych. Początkowo zmieniłem nazwę na te, które najwyraźniej spowodowałyby mi kłopoty. Okazuje się, że było to niepotrzebne. Zamiast tego użyj:

    $ brew doctor
    Warning: Broken symlinks were found. Remove them with 'brew prune':
      /usr/local/bin/python-32
      /usr/local/bin/python2-32
      /usr/local/bin/python2.7-32
      /usr/local/bin/python2_DNU
      /usr/local/bin/python_DNU
      /usr/local/bin/pythonw-32
      /usr/local/bin/pythonw2-32
      /usr/local/bin/pythonw2.7-32
    

    Tak więc brew prune(lub brew cleanup --prunew nowszych wersjach Homebrew) działało idealnie. Usunął wszystkie powyższe dowiązania symboliczne.

  4. Ponownie zainstaluj python i python3 przez homebrew. Wszystko gotowe.

Nigdy nie dotknąłem instalacji Pythona w /Systemfolderze.

Och, i żeby było jasne. Odpowiedź na pierwotne pytanie brzmi:

Tak, możesz zaufać starym referencjom, jak napisano! Te wytyczne są nadal aktualne.

zipzit
źródło
@nohillside thx, ale .. mogłeś łatwo potwierdzić najnowsze dane z XXXX, które skłoniły Cię do edycji jako komentarz tutaj. Wygląda na to, że brakuje Ci atrybucji. Czy Newby nie może publikować komentarzy? A teraz nie widzę nazwy osoby, która mogłaby to zrobić.
zipzit
Najlepszym sposobem na uzyskanie atrybucji jest faktyczna edycja postu na wypadek, gdyby była wymagana edycja, coś, co mogą zrobić wszyscy użytkownicy (nawet anonimowi). Jeśli użytkownicy zdecydują się opublikować komentarze dotyczące ulepszeń jako odpowiedzi, zwykle po prostu edytuję je w odpowiednim poście.
nohillside
Homebrew wersje Pythona nie będą obsługiwać Xcode ani narzędzi takich jak dłutowanie, które ostatnio sprawdzałem. Zwykle nie jest to zalecane.
nyteshade
Aby wspomnieć, /System/Library/Frameworks/Python.framework/nie wolno nigdy usuwać, link docs.python.org/3/using/mac.html
ivan.proskuryakov
nowa wersja ma oczyszczanie naparu
GraphicalDot
5

Moja wersja Pythona to 3.6, chciałem zaktualizować do wersji 3.7 (w przypadku podobnych wymagań). Korzystam z systemu macOS w wersji 10.12.6 i po prostu odinstalowanie i ponowna instalacja działała dla mnie:

brew uninstall --ignore-dependencies python3

Następnie:

brew install python3

i zrobione:

python3
Python 3.7.2 (default, Jan 13 2019, 12:51:54) 
[Clang 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Kijanka
źródło
To działało dla mnie dobrze. Musiałem dostosować ipythonścieżkę, ręcznie edytując skrypt uruchamiania - aby wskazać na wersję
brewera
0

Pliki systemowe są chronione przez System Integrity Protection. Nie będzie można wykonać tych instrukcji do rm -rflosowych folderów w / System bez uprzedniego wyłączenia SIP.

Ponieważ jednak pliki są chronione, wiesz, że pliki nie zostały zmodyfikowane. Twój „bałagan wersji” byłby spowodowany konfiguracją powłoki i nie zostałby zmieniony przez modyfikację plików systemowych. Nie powinieneś dotykać tych plików, które na pewno istnieją w macOS.

Homebrew instaluje się osobno w / usr / local / Cellar. Użyj Homebrew do zarządzania instalacją w języku Python i całkowicie zignoruj ​​instalację systemu.

grg
źródło
Czy to TAK, czy można ufać tym dwóm referencjom, czy NIE, nie ufać im? Odniesienia te wydają się wysokiej jakości, dobrze uzasadnione i wyjaśnione dość szczegółowo.
zipzit
1
@zipzit Ty możesz im zaufać, ale nie będzie działać - to dwie odrębne rzeczy. Treść jest godna zaufania; wypróbuj go na najnowszej wersji systemu macOS i nie wyrządzi to żadnej szkody, ale również nie zadziała, z powodów podanych w tej odpowiedzi. Zdecydowanie odradzam wyłączanie SIP tylko po to, aby usunąć systemową instalację Pythona (dlatego nie podłączyłem się do instrukcji), ponieważ nie jest to rzeczywista przyczyna problemu i nic nie pomoże rozwiązać, potencjalnie powodując więcej problemów w procesie.
grg
Twoja odpowiedź nie ma dla mnie sensu. Żadna z powyższych odpowiedzi jakościowych nie dotyka niczego /system. None = Not One, Zero, Zip, Nada. Są rzeczy do usunięcia w 1) folderze Python 3.3 w folderze Aplikacje. 2) /Library/Frameworks/Python.framework 3) ~ 20 dowiązań symbolicznych w / usr / local / bin. 4) referencje w ścieżce powłoki (jeśli istnieje). Nie sądzę, że którykolwiek z nich uderzy w zabezpieczenia, o których mówisz. czego mi brakuje?
zipzit
@zipzit Jakiś czas temu Python został przeniesiony z / Library do / System / Library, więc będziesz dotykać / System w celu usunięcia instalacji systemu. Systemowe środowisko Python znajduje się w /System/Library/Frameworks/Python.framework, a nie / Library.
grg
$which python /Library/Frameworks/Python.framework/Versions/2.7/bin/python $ which python3 /usr/local/bin/python3plus python 2.3, 2.4, 2.5, 2.7 i bieżący znajduje się wSystem/Library/Frameworks/Python.framework/Versions/...
zipzit