¿Cómo cambio de nuevo a python2 después de que Anaconda establezca python3 como predeterminado?

18

Recientemente, instalé Anaconda3-2.5.0-Linux-x86_64.sh en mi 15.04 y terminé con esto.

:~$ 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 los últimos momentos de instalación, ingresé algo como yesapurado, y supongo que tenía que ver con esto. (Ok, es mi culpa, debería haberlo manejado con cuidado, pero ahora necesito ayuda, no críticas).

Captura de pantalla

AFAIK esto definitivamente va a romper otros programas. ¿Qué hago ahora?


Lo que creo que podría funcionar.

¿Se puede hacer esto usando alias?

alias python=python2

Pero no estoy seguro.

siniestro
fuente
Si. usoalias python=python2
Mostafa Ahangarha
AFAIK esto definitivamente va a romper otros programas. ¿Qué te hace pensar eso? Si Anaconda establece Python 3 como predeterminado, probablemente sea por una razón.
fkraiem
Ya he arruinado uno de mis proyectos que fue escrito para 2.x, y no se recomienda convertir el predeterminado a 3.x, especialmente porque muchos paquetes funcionan en 2.x!
siniestro
Esto es cuando está muy contento de haber adoptado el enfoque profesional y tener un clon de su unidad de arranque preinstalada para evitar que esto se convierta en una gran pérdida de tiempo. Por favor vea mi respuesta a continuación. Creo que su método de instalación causó la falla. Entonces, si esto me sucediera, volvería y volvería a intentarlo. El tiempo total sería menos de un día para determinar si es viable. En mi caso, como puede ver, estoy al final de las verificaciones, así que ahora puedo avanzar para ver si vale la pena el esfuerzo en primer lugar. Tomó un par de días para asegurarse de que no hubiera causado un problema, y ​​el trabajo de investigación está en camino.
SDsolar
En cuanto a la especificación de la versión de Python, asegúrese de conocer exactamente el efecto dominó que esto puede tener en todo su sistema. A menos que solo esté jugando, realmente requerirá un proceso de verificación completo si cambia los objetivos de los which pythonresultados de shebang predeterminados . Lleva un poco de tiempo por adelantado evitar que más tarde descubras que te has metido en la esquina de la necesidad de reescribir algunas de tus utilidades. Lo mejor es dejar que las cosas funcionen con los valores predeterminados a menos que tenga mucho tiempo libre.
SDsolar

Respuestas:

18

Realicé la instalación en una máquina virtual y sucedió lo siguiente.

  1. El instalador solicita una ubicación de instalación. Por defecto es /home/myuser/anaconda3.
  2. Al final se te preguntará

    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

Para restaurar el comportamiento anterior, vaya a su directorio de inicio y haga

mv .bashrc-anaconda3.bak .bashrc

luego comience un nuevo shell.

Como sugiere, podría alias python=python2, pero eso me parece un poco extraño. me gustaría

  1. Restaurar el original .bashrc
  2. Crear (si no existe) ~/bin
  3. Enlace ln -s ~/anaconda3/bin/python3 ~/bin/python3
  4. [Anteponer $HOME/bina $PATH] (ya debería estar configurado de forma predeterminada ~/.profile)
  5. Reiniciar

De esa manera, las llamadas python3comenzarán desde Anaconda.


Un punto importante es que el original /usr/bin/pythontodavía está allí, y aún señala python2.7. Las ramificaciones de tener python->python3en su camino dependen de cómo se llama un script específico.

Si #!/usr/bin/pythonse usa el shebang , como probablemente esté en todos los ejecutables que se envían con Ubuntu, nada cambiará. Por otro lado, para una mejor portabilidad a #!/usr/bin/env pythonveces se usa, lo que ahora hará python3.5que se llame.

Nephente
fuente
3
"4. Anteponer $ HOME / bin a $ PATH" ... ya está hecho de forma predeterminada ~/.profile, solo es necesario volver a iniciar sesión después de crear ~/bin.
muru
@muru Eso es verdad, gracias. Agregado a la respuesta.
Nephente
bueno, eso funcionó, gracias! Solo para tener esto en cuenta, que tenía python 3.4.3 también instalado previamente (y pip y pip3 estaban asociados con él), ahora tengo 2.7, 3.4, 3.5. ¡Ahora voy a reinstalar pip para señalarlo a 3.5!
siniestro
Anaconda viene con su propio administrador de paquetes llamado conda. También gestiona entornos virtuales. Lo uso para instalar paquetes en lugar de pip.
Nephente
3

En caso de que alguien esté buscando cambiar su versión predeterminada de Python a 2.7 después de desordenarla (cambiando la predeterminada a: anaconda o python 3) y terminando con un software no funcional, solo siga este enlace: Enlace con instrucciones para cambiar la predeterminada versión de python

Ubdus Samad
fuente
Si un cambio en el sistema sale mal, asegúrese de poder revertirlo. Asegúrese de tener buenas copias de seguridad de la imagen del sistema para que cualquier cambio importante se pueda revertir rápidamente si no salen según lo planeado. Piensa profesional. Si utiliza técnicas de aficionados, no puede esperar resultados profesionales.
SDsolar
1

Esto funcionó para mí, pero para Miniconda, también debería funcionar para Anaconda, pero corrígeme si me equivoco.

Primero obtenga su variable $ PATH :

echo $PATH

Probablemente se verá así (ruta de miniconda antes que todo lo demás):

/home/your_user/miniconda3/bin:$PATH

Copie esa ruta al final de su archivo ~ / .bashrc , pero con Miniconda al final en lugar del comienzo de la ruta de la siguiente manera:

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

El sistema buscará programas al comienzo de la variable $ PATH antes de la carpeta miniconda3 / bin.

Debería restaurar las versiones de los programas anteriores que tenía como Python.

Comenzando en Conda 4.4, cambiaron el código agregado a ~ / .bashrc. Ahora, para lograr lo mismo, edite ~ / .bashrc y comente la línea siguiente para evitar que la capa base (entorno base) se active en cada terminal. No es necesario tocar ninguna otra parte de las nuevas incorporaciones. No estoy seguro de qué importancia CONDA_CHANGEPS1=falsetiene, pero hasta ahora no me he encontrado con ningún problema.

   # CONDA_CHANGEPS1=false conda activate base

Y si bien no verá la carpeta Conda en la trayectoria más, el condacomando seguirá funcionando bien, y el original python, python3ypipenv comandos también.

pedrodcb
fuente
Vota porque creo que tienes razón. Esto es bueno tener en la base de datos. Sin embargo, ¿puedo pedirle que sea un poco más específico en cuanto a los números de versión del software involucrado?
SDsolar
Gracias, y realmente no creo que la versión del programa importe, esto siempre debería funcionar. Sin embargo, en ese momento mi instalador tenía la siguiente versión: Miniconda3 4.3.14. ¿Eso ayuda?
pedrodcb
0

Aquí está mi respuesta, y puede o no ser la respuesta específica real a lo que ha hecho a su propio sistema.

Sin embargo, estoy en una situación similar y tenía la misma preocupación.

Estoy usando Ubuntu 16.04 LTS y Python 2.7.12, y recientemente instalé Anaconda.

Entonces, cuando voy a la línea de comando y pythonescribo, todavía va a mi instalación de Python2.

Confirmado por esta secuencia:

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

Entonces, en mi caso, anacondaNO causa ningún problema con mis shebangs Python2 predeterminados.

En definitiva, esa es la pregunta.

Cuando le pregunta al sistema which python, puede confiar en que sea la cadena correcta para usar en la primera línea de sus programas Python de estilo de línea de comandos.

En mi situación, todos mis mismos archivos de script de línea de comandos de Python continúan ejecutándose bien.

Tiendo a escribir Python en un modo compatible con 3. Como usar paréntesis alrededor de mis declaraciones impresas. Pero me estoy resistiendo activamente a un cambio importante en el sistema que podría causar fallas en los programas de Python 2. Python 3 suena genial pero innecesario para mis necesidades. Python 2 es un lenguaje asombroso.

Mi entorno informático no me permite volver y rediseñar procesos pasados ​​que se han ajustado para que funcionen correctamente sin tener que esperar mucho tiempo ya que tendría que volver y averiguar dónde lo usé en primer lugar.


En pocas palabras: al instalarlo anacondapara usarlo en el futuro, no he tenido problemas de velocidad ni problemas.


Ese es el punto en el que estoy en el proceso ... Acabo de volver a certificar todo el software anterior.


El siguiente paso es usar algunas de las cosas geniales que se prometen en el paquete.


Por lo tanto, debo sospechar que otros simplemente instalando anacondaallí deben ser más para su situación.

Desde mi experiencia, no es un problema en absoluto.

SDsolar
fuente
Para su información, tengo una estación de trabajo científica completa, trabajando en dinámica solar. También sobre efemerales e interacciones satelitales. DEBE funcionar. Así que no soy solo un pony de un solo truco en todo esto. Instalo una cosa a la vez y luego verifico que todo antes funcione. Luego paso al siguiente. SciPy, Matplotlab, etc. (Mi preferencia para trazar es gnuplot). Entonces, comprenda que estoy enviando esta respuesta como un punto de datos de un sistema de trabajo en vivo 24x7 en un entorno de investigación académica. Este no es un entorno de prueba, es una producción diaria.
SDsolar
Además, como mencioné en un comentario anterior, PIENSE PROFESIONAL. Estos sistemas están en uso por investigadores de muy alto nivel en todo el mundo. -> Asegúrese de que su unidad de arranque tenga un clon antes de realizar actualizaciones importantes del sistema. El ddcomando es rápido y fácil, y las conexiones SATA son fáciles. No hay razón para evitar proteger su sistema. Solo tenga cuidado de que en cada paso pueda revertir todos los cambios que puedan ocurrir. Los discos duros son mucho menos costosos que su tiempo. (a menos que no pienses que es verdad). Los fondos de subvención más una reducción de tiempo deberían ser suficientes incentivos.
SDsolar