Come posso tornare a python2 dopo che Anaconda ha impostato python3 come predefinito?


18

Di recente, ho installato Anaconda3-2.5.0-Linux-x86_64.sh sul mio 15.04 e ho finito con questo!

:~$ 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)

Durante gli ultimi momenti dell'installazione, ho inserito qualcosa come yesin fretta, e suppongo che dovesse fare qualcosa con questo. (Ok, colpa mia, avrei dovuto gestirlo con cura, ma adesso ho bisogno di aiuto, non di critiche).

Immagine dello schermo

AFAIK, questo romperà sicuramente altri programmi. Cosa faccio ora?


Quello che penso potrebbe funzionare.

Questo può essere fatto usando alias?

alias python=python2

Ma non ne sono sicuro.


Sì. usoalias python=python2
Mostafa Ahangarha,

AFAIK, questo romperà sicuramente altri programmi. Cosa te lo fa pensare? Se Anaconda imposta Python 3 come predefinito, probabilmente è per un motivo.
fkraiem,

Ho già rovinato uno dei miei progetti che è stato scritto per 2.x, e la conversione di default in 3.x non è incoraggiata soprattutto perché molti pacchetti funzionano su 2.x!
sinistro

Questo è quando sei molto contento di aver adottato l'approccio professionale e di avere un clone del tuo disco di avvio preinstallato per evitare che questo diventi un grande spreco di tempo. Si prega di vedere la mia risposta qui sotto. Penso che il tuo metodo di installazione abbia causato il problema tecnico. Quindi, se ciò mi accadesse, ritornerei e riproverei. Il tempo totale sarebbe inferiore a un giorno per capire se è praticabile. Nel mio caso, come puoi vedere, sono alla fine delle verifiche, quindi ora posso progredire per vedere se questo vale la pena in primo luogo. Ci sono voluti un paio di giorni per assicurarsi che non avesse causato problemi e che i lavori di ricerca fossero in corso.
SDsolar,

per quanto riguarda la specifica della versione di Python, assicurati di conoscere esattamente l'effetto a catena che può avere su tutto il tuo sistema. A meno che tu non stia solo giocando, richiederà davvero un processo di verifica completo se cambi gli obiettivi dei which pythonrisultati di shebang predefiniti . Ci vuole solo un po 'di tempo in anticipo per impedire in seguito di scoprire che ti sei dipinto nell'angolo della necessità di riscrivere alcune delle tue utility. La cosa migliore è lasciare che le cose funzionino con le impostazioni predefinite a meno che tu non abbia molto tempo a disposizione.
SDsolar,

Risposte:


18

Ho eseguito l'installazione in una macchina virtuale e il seguente successo.

  1. Il programma di installazione richiede un percorso di installazione. L'impostazione predefinita è /home/myuser/anaconda3.
  2. Alla fine ti verrà chiesto

    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

Per ripristinare il vecchio comportamento, vai alla tua home directory ed esegui

mv .bashrc-anaconda3.bak .bashrc

quindi avviare una nuova shell.

Come suggerisci, potresti alias python=python2, ma lo trovo un po 'strano. Vorrei

  1. Ripristina l'originale .bashrc
  2. Crea (se non esiste) ~/bin
  3. collegamento ln -s ~/anaconda3/bin/python3 ~/bin/python3
  4. [Prepend $HOME/binto $PATH] (dovrebbe essere già impostato di default da ~/.profile)
  5. Nuovo login.

In questo modo, la chiamata python3avvierà quella di Anaconda.


Un punto importante è che l'originale /usr/bin/pythonè ancora lì e indica ancora python2.7. Le conseguenze di avere python->python3nel tuo percorso dipendono da come viene chiamato uno script specifico.

Se #!/usr/bin/pythonviene utilizzato lo shebang , come probabilmente è in tutti gli eseguibili forniti con Ubuntu, nulla cambierà. D'altra parte, a #!/usr/bin/env pythonvolte viene utilizzata una migliore portabilità , che ora farà python3.5chiamare.


3
"4. Prepend $ HOME / bin a $ PATH" .. già fatto di default ~/.profile- dopo la creazione è necessario solo un nuovo accesso ~/bin.
Muru,

@muru È vero, grazie. Aggiunto alla risposta.
Nephente,

ok, ha funzionato, grazie! Giusto per notare questo, che avevo già installato Python 3.4.3 (e pip e pip3 erano entrambi associati ad esso), ora ho 2.7, 3.4, 3.5. Ora reinstallerò pip per puntarlo a 3.5!
sinistro

Anaconda viene fornito con un proprio gestore di pacchetti chiamato conda. Gestisce anche ambienti virtuali. Lo uso per installare pacchetti anziché pip.
Nephente,



3

Nel caso in cui qualcuno stia cercando di riportare la propria versione predefinita di Python in 2.7 dopo averla incasinata (cambiando quella di default in: anaconda o python 3) e finendo con un software non funzionale, basta seguire questo link: Link con le istruzioni per modificare l'impostazione predefinita versione di Python.


Se una modifica del sistema non funziona, assicurati di poterla ripristinare. Assicurati di disporre di buoni backup delle immagini di sistema in modo che eventuali modifiche importanti possano essere annullate rapidamente se non vanno come pianificato. Pensa professionale. Se usi tecniche amatoriali, non puoi aspettarti risultati professionali.
SDsolar,

1

Questo ha funzionato per me, ma per Miniconda, dovrebbe funzionare anche per Anaconda, ma per favore correggimi se sbaglio.

Per prima cosa ottieni la tua variabile $ PATH :

echo $PATH

Probabilmente avrà questo aspetto (percorso della miniconda prima di ogni altra cosa):

/home/your_user/miniconda3/bin:$PATH

Copia quel percorso in fondo al tuo file ~ / .bashrc , ma con Miniconda alla fine anziché all'inizio del percorso in questo modo:

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

Il sistema cercherà i programmi all'inizio della variabile $ PATH prima della cartella miniconda3 / bin.

Dovrebbe ripristinare le versioni dei programmi precedenti che avevi come Python.

A partire da Conda 4.4, hanno cambiato il codice aggiunto a ~ / .bashrc. Ora, per ottenere lo stesso risultato, modifica ~ / .bashrc e commenta la riga in basso in questo modo per impedire l'attivazione del layer base (ambiente base) in ogni terminale. Non è necessario toccare altre parti delle nuove aggiunte. Non sono sicuro del significato CONDA_CHANGEPS1=false, ma finora non ho riscontrato problemi.

   # CONDA_CHANGEPS1=false conda activate base

E mentre non sarà possibile visualizzare la cartella Conda nel percorso più, il condacomando sarà ancora funzionare bene, e l'originale python, python3e pipenvcomandi pure.


Voto perché penso che tu abbia ragione. Questo è buono da avere nel database. Tuttavia, posso chiederti di essere un po 'più specifico riguardo ai numeri di versione del software in questione?
SDsolar,

Grazie e non credo davvero che la versione del programma sia importante, dovrebbe funzionare sempre. Al momento il mio programma di installazione era alla seguente versione: Miniconda3 4.3.14. Questo aiuta?
pedrodcb,

0

Ecco la mia risposta, e potrebbe essere o meno la risposta specifica effettiva a ciò che hai fatto al tuo sistema.

Tuttavia, mi trovo in una situazione simile e ho avuto la stessa preoccupazione.

Sto usando Ubuntu 16.04 LTS e Python 2.7.12, e recentemente installato Anaconda.

Quindi ora, quando vado alla riga di comando e pythonscrivo, va ancora alla mia installazione di Python2.

Confermato da questa sequenza:

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

Quindi, nel mio caso, anacondaNON causa alcun problema con i miei shebang Python2 predefiniti.

In definitiva, questa è la domanda.

Quando chiedi al sistema which pythonpuoi essere sicuro che sia una stringa corretta da usare nella prima riga dei tuoi programmi Python in stile riga di comando.

Nella mia situazione, tutti i miei stessi file di script della riga di comando Python continuano ad essere eseguiti correttamente.

Tendo a scrivere Python in una modalità compatibile con 3. Come usare le parentesi attorno alle mie dichiarazioni di stampa. Ma sto resistendo attivamente a un grande cambiamento nel sistema che potrebbe causare problemi ai programmi Python 2 combattuti. Python 3 suona alla grande ma non è necessario per le mie esigenze. Python 2 è un linguaggio straordinario.

Il mio ambiente informatico non mi consente di tornare indietro e riprogettare i processi passati che sono stati sintonizzati per funzionare correttamente senza subire un colpo maggiore di tempo poiché dovrei tornare indietro e capire dove l'ho usato in primo luogo.


Conclusione per me: al momento dell'installazione anacondaper un uso futuro, non ho riscontrato alcun problema di velocità.


Questo è il punto in cui mi trovo nel processo ... Ho appena finito di ri-certificare tutto il software passato.


Il prossimo passo è usare effettivamente alcune delle cose interessanti che sono promesse nel pacchetto.


Quindi, devo sospettare che altre semplici installazioni anacondaci debbano essere di più per la tua situazione.

Dalla mia esperienza non è affatto un problema.


Cordiali saluti, ho una postazione scientifica completa, che lavora sulla dinamica solare. Anche su effimere e interazioni satellitari. DEVE funzionare. Quindi non sono solo un pony in tutto questo. Installo una cosa alla volta, quindi verifico che tutto ciò che funziona prima. Quindi passo al prossimo. SciPy, Matplotlab, ecc. (La mia preferenza per la stampa è gnuplot). Quindi, per favore, comprendi che sto inviando questa risposta come un punto dati da un sistema operativo attivo 24x7 in un ambiente di ricerca accademica. Questo non è un ambiente di test - è la produzione quotidiana.
SDsolar,

Inoltre, come ho accennato in un commento sopra, THINK PROFESSIONAL. Questi sistemi sono utilizzati da ricercatori di altissimo livello in tutto il mondo. -> Assicurati che il tuo disco di avvio abbia un clone prima di effettuare importanti aggiornamenti di sistema. Il ddcomando è rapido e semplice e le connessioni SATA sono facili. Non vi è alcun motivo per evitare di proteggere il sistema. Basta fare attenzione che ad ogni passaggio è possibile annullare qualsiasi e tutti i cambiamenti che potrebbero accadere. I rives duri sono molto meno costosi del tuo tempo. (a meno che non pensi che sia vero). I fondi per le sovvenzioni più una crisi del tempo dovrebbero essere incentivi sufficienti.
SDsolar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.