Jak wrócić do python2 po tym, jak Anaconda ustawiła python3 jako domyślny?

18

Ostatnio zainstalowałem Anaconda3-2.5.0-Linux-x86_64.sh na moim 15.04 i skończyłem z tym!

:~$ python --version
Python 3.5.1 :: Anaconda 2.5.0 (64-bit)

:~$ python2 --version
Python 2.7.9

:~$ python3 --version
Python 3.5.1 :: Anaconda 2.5.0 (64-bit)

W ostatnich chwilach instalacji wchodziłem jakoś yesw pośpiechu i przypuszczam, że musiało to coś z tym zrobić. (Okej, moja wina, powinienem był to zrobić ostrożnie, ale teraz potrzebuję pomocy, a nie krytyki).

Zrzut ekranu

AFAIK to zdecydowanie zepsuje inne programy. Co mam teraz zrobić?


To, co myślę, może działać.

Czy można to zrobić za pomocą aliasów?

alias python=python2

Ale nie jestem pewien.

złowrogi
źródło
Tak. użyciealias python=python2
Mostafa Ahangarha
AFAIK to zdecydowanie zepsuje inne programy. Co sprawia, że ​​tak myślisz? Jeśli Anaconda ustawia Python 3 jako domyślny, to prawdopodobnie z jakiegoś powodu.
fkraiem
Zniszczyłem już jeden z moich projektów, który został napisany dla wersji 2.x, a konwersja domyślnej wersji na 3.x nie jest zalecana, zwłaszcza, że ​​wiele pakietów działa na 2.x!
złowrogi
W tym momencie bardzo cieszysz się, że podjąłeś profesjonalne podejście i posiadałeś klon swojego przedinstalacyjnego napędu rozruchowego, aby zapobiec przekształceniu go w znaczną część czasu. Zobacz moją odpowiedź poniżej. Myślę, że twoja metoda instalacji spowodowała usterkę. Więc jeśli tak się stanie, cofnę się i spróbuję ponownie. Całkowity czas byłby krótszy niż jeden dzień, aby dowiedzieć się, czy jest to wykonalne. W moim przypadku, jak widać, jestem na końcu weryfikacji, więc mogę teraz przejść dalej, aby sprawdzić, czy jest to warte wysiłku. Zajęło mi to kilka dni, aby upewnić się, że nie spowodowało problemu, a prace badawcze są na dobrej drodze.
SDsolar,
jeśli chodzi o określenie wersji Pythona, upewnij się, że znasz dokładnie efekt tętnienia, jaki może to mieć w całym systemie. Chyba że po prostu grasz, to naprawdę będzie wymagać pełnego procesu weryfikacji, jeśli zmienisz cele domyślnych which pythonwyników shebang. Zajmuje to trochę czasu, aby później nie odkryć, że masz problem z przepisaniem niektórych narzędzi. Najlepiej jest pozostawić rzeczy pracujące z ustawieniami domyślnymi, chyba że masz dużo czasu.
SDsolar,

Odpowiedzi:

18

Przeszedłem instalację na maszynie wirtualnej i zdarzyło się następujące.

  1. Instalator prosi o lokalizację instalacji. Domyślnie jest /home/myuser/anaconda3.
  2. Na koniec zostaniesz zapytany

    Python 3.5.1 :: Continuum Analytics, Inc.
    creating default environment...
    installation finished.
    Do you wish the installer to prepend the Anaconda3 install location
    to PATH in your /home/myuser/.bashrc ? [yes|no]
    [no] >>> yes
    
    Prepending PATH=/home/myuser/anaconda3/bin to PATH in /home/myuser/.bashrc
    A backup will be made to: /home/myuser/.bashrc-anaconda3.bak

Aby przywrócić stare zachowanie, przejdź do katalogu domowego i zrób to

mv .bashrc-anaconda3.bak .bashrc

następnie uruchom nową powłokę.

Jak sugerujesz, możesz alias python=python2, ale wydaje mi się to trochę dziwne. Ja bym

  1. Przywróć oryginał .bashrc
  2. Utwórz (jeśli nie istnieje) ~/bin
  3. Połączyć ln -s ~/anaconda3/bin/python3 ~/bin/python3
  4. [Prepend $HOME/binto $PATH] (Powinien być już domyślnie ustawiony ~/.profile)
  5. Zaloguj się ponownie

W ten sposób wywołanie python3rozpocznie się od Anacondy.


Ważną kwestią jest to, że oryginał /usr/bin/pythonwciąż tam jest i nadal wskazuje python2.7. Konsekwencje posiadania python->python3na swojej ścieżce zależą od tego, jak wywoływany jest określony skrypt.

Jeśli #!/usr/bin/pythonzostanie użyty shebang , podobnie jak prawdopodobnie we wszystkich plikach wykonywalnych dostarczanych z Ubuntu, nic się nie zmieni. Z drugiej strony #!/usr/bin/env pythonczasami używana jest lepsza przenośność , co spowoduje teraz wywołanie python3.5.

Nephente
źródło
3
„4. Przygotuj $ HOME / bin do $ PATH” .. jest już domyślnie zrobione ~/.profile- po utworzeniu wymagana jest tylko ponowna rejestracja ~/bin.
muru
@muru To prawda, dziękuję. Dodano do odpowiedzi.
Nephente
ok, zadziałało, dziękuję! Żeby zauważyć to, że miałem wcześniej zainstalowany Python 3.4.3 (i pip i pip3 były z nim związane), teraz mam 2.7, 3.4, 3.5. Teraz ponownie zainstaluję pip, aby wskazał 3.5!
złowrogi
Anaconda ma własny menedżer pakietów o nazwie conda. Zarządza także środowiskami wirtualnymi. Używam tego do instalowania pakietów zamiast pip.
Nephente
7

Dobra odpowiedź tutaj: /programming/24405561/how-to-install-2-anacondas-python-2-7-and-3-4-on-mac-os-10-9

conda create -n python2 python=2.7 anaconda

następnie, aby przełączyć:

source activate python2
Patrick Dolan
źródło
Jeśli potrzebujesz tego, możesz mieć znacznie głębsze problemy. Jeśli twój system jest ważny, wykonaj pełną weryfikację komend i / lub narzędzi zależnych od Pythona. Uczciwe ostrzeżenie.
SDsolar,
3

Jeśli ktoś chce zmienić domyślną wersję Pythona z powrotem na 2.7 po zepsuciu go (zmieniając domyślną wersję na: anakonda lub python 3) i kończąc na niefunkcjonalnym oprogramowaniu, wystarczy kliknąć ten link: Link do instrukcji zmiany domyślnej wersja python.

Ubdus Samad
źródło
Jeśli zmiana systemu nie powiedzie się, upewnij się, że możesz ją cofnąć. Upewnij się, że masz dobre kopie zapasowe obrazu systemu, aby wszelkie ważne zmiany mogły zostać szybko cofnięte, jeśli nie pójdą zgodnie z planem. Myśl profesjonalnie. Jeśli używasz technik amatorskich, nie możesz oczekiwać profesjonalnych rezultatów.
SDsolar,
1

To działało dla mnie, ale dla Minicondy, powinno również działać dla Anacondy, ale proszę mnie poprawić, jeśli się mylę.

Najpierw zdobądź zmienną $ PATH :

echo $PATH

Prawdopodobnie będzie to wyglądać tak (ścieżka miniconda przed wszystkim innym):

/home/your_user/miniconda3/bin:$PATH

Skopiuj tę ścieżkę na dół pliku ~ / .bashrc , ale z Minicondą na końcu zamiast na początku ścieżki tak:

export PATH="$PATH:/home/your_user/miniconda3/bin"

System wyszuka programy na początku zmiennej $ PATH przed folderem miniconda3 / bin.

Powinien przywrócić wersje poprzednich programów, takich jak Python.

Począwszy od Conda 4.4, zmienili kod dodany do ~ / .bashrc. Teraz, aby osiągnąć to samo, edytuj ~ / .bashrc i skomentuj poniższy wiersz, aby zapobiec aktywacji warstwy podstawowej (środowiska podstawowego) w każdym terminalu. Nie trzeba dotykać żadnej innej części nowych dodatków. Nie jestem pewien, jakie znaczenie to CONDA_CHANGEPS1=falsema, ale jak dotąd nie napotkałem żadnych problemów.

   # CONDA_CHANGEPS1=false conda activate base

I choć nie będzie widać folder Conda w ścieżce, strona zewnętrzna condakomenda będzie nadal działać w porządku, i oryginalna python, python3oraz pipenvkomendy, jak również.

pedrodcb
źródło
Głosuj, bo myślę, że masz rację. To dobrze mieć w bazie danych. Czy mogę jednak prosić o bardziej szczegółowe informacje na temat numerów wersji oprogramowania?
SDsolar,
Dziękuję i nie sądzę, że wersja programu ma znaczenie, to zawsze powinno działać. Jednak w tym czasie mój instalator był w następującej wersji: Miniconda3 4.3.14. To pomaga?
pedrodcb 12.01.18
0

Oto moja odpowiedź, która może, ale nie musi, być konkretną odpowiedzią na to, co zrobiłeś z własnym systemem.

Jestem jednak w podobnej sytuacji i miałem te same obawy.

Używam Ubuntu 16.04 LTS i Python 2.7.12, a niedawno zainstalowałem Anacondę.

Więc teraz, kiedy idę do wiersza poleceń i pythonpiszę, nadal przechodzi do mojej instalacji Python2.

Potwierdzony przez następującą sekwencję:

$which python
/usr/bin/python     <  Catch-all for max compatibility
$python
Python 2.7.12 . . etc

Więc w moim przypadku anacondaNIE powoduje żadnego problemu z moimi domyślnymi shebangami Python2.

Ostatecznie to jest pytanie.

Kiedy pytasz system which python, możesz zaufać, że jest to poprawny ciąg znaków, który będzie używany w pierwszym wierszu programów w stylu Python w stylu wiersza poleceń.

W mojej sytuacji wszystkie moje pliki skryptowe wiersza polecenia Pythona nadal działają poprawnie.

Zwykle piszę w Pythonie w trybie zgodnym z 3. Takich jak używanie nawiasów wokół moich drukowanych instrukcji. Ale aktywnie opieram się poważnym zmianom w systemie, które mogą powodować problemy w trudnych programach Python 2. Python 3 brzmi świetnie, ale jest niepotrzebny dla moich potrzeb. Python 2 to niesamowity język.

Moje środowisko komputerowe nie pozwala mi cofać się i przeprojektowywać wcześniejszych procesów, które zostały dostrojone, aby działały poprawnie bez większego wysiłku, ponieważ musiałbym wrócić i dowiedzieć się, gdzie go użyłem.


Najważniejsze dla mnie: Po instalacji anacondado przyszłego użytku nie miałem żadnych wstrząsów ani problemów.


W tym momencie jestem w trakcie procesu… Właśnie skończyłem ponowną certyfikację całego oprogramowania z przeszłości.


Następnym krokiem jest użycie niektórych fajnych rzeczy obiecanych w pakiecie.


Muszę więc podejrzewać, że inne instalowanie po prostu anacondamusi być więcej w twojej sytuacji.

Z mojego doświadczenia wcale nie jest to problem.

SDsolar
źródło
Do Twojej dyspozycji mam kompletne stanowisko naukowe, które pracuje nad dynamiką słońca. Także o efemerydach i interakcjach satelitarnych. MUSI działać. W związku z tym nie jestem tylko jednym kucykiem. Instaluję jedną rzecz na raz, a następnie sprawdzam, czy wszystko wcześniej działało. Następnie przechodzę do następnego. SciPy, Matplotlab itp. (Moje preferencje do kreślenia to gnuplot). Proszę więc zrozumieć, że przesyłam tę odpowiedź jako punkt danych z działającego 24 godziny na dobę i 7 dni w tygodniu systemu w środowisku akademickim. To nie jest środowisko testowe - to codzienna produkcja.
SDsolar,
Ponadto, jak wspomniałem w powyższym komentarzu, MYŚL PROFESJONALNIE. Systemy te są używane przez naukowców wysokiego szczebla na całym świecie. -> Upewnij się, że dysk rozruchowy ma klon przed dokonaniem jakichkolwiek poważniejszych aktualizacji systemu. ddPolecenie jest szybkie i łatwe, a połączenia SATA są łatwe. Nie ma powodu, aby unikać ochrony systemu. Uważaj tylko, aby na każdym kroku cofnąć wszelkie zmiany, które mogą się zdarzyć. Ciężkie rives są znacznie tańsze niż twój czas. (chyba że nie uważasz, że to prawda). Dotacja funduszy i ograniczenie czasu powinny wystarczyć.
SDsolar,