¿Cómo instalar Python 3.6?


107

Me gustaría instalar la última versión de Python, que es 3.6 en el momento de esta publicación. Sin embargo, el repositorio dice que Python 3.4.2 es la versión más nueva.

He intentado:

$ sudo apt-get update
$ sudo apt-get install python3

python3 is already the newest version.

$ python -V

Python 3.4.2

Para actualizar a Python 3.6 en mi estación de trabajo de Windows, simplemente descargué un exe, hice clic en "Siguiente" varias veces y listo. ¿Cuál es el procedimiento correcto y oficialmente aceptado para instalar Python 3.6 en Debian Jessie?


66
Los repositorios predeterminados de Debian contienen paquetes de software compilados específicamente para una determinada versión de Debian. Excepto por las actualizaciones de seguridad (preferiblemente solo la menor cantidad de cambios necesarios para solucionar un agujero de seguridad), es posible que las nuevas versiones de la mayoría del software no estén disponibles hasta la próxima versión principal para evitar la inestabilidad potencial.
phk

@phk En ese caso, ¿no sería prudente adoptar un comportamiento similar al pip, es decir, predeterminado a 3.4.2 cuando no se especifica una versión, y permitir al usuario solicitar explícitamente 3.6 con una marca? Sólo una idea :)
dvtan

1
Esto significaría que la gente de Debian tendría que mantener todas estas versiones de Python para cada versión de Debian compatible. Claro, podría automatizarse, pero aún sería mucho. Además, los usuarios avanzados que desean versiones más recientes también podrían usar repositorios personalizados. A veces, los propios autores de software los mantienen para Debian y otras distribuciones populares de Linux, por ejemplo, en el caso de Oracle VirtualBox .
phk

1
Python 3.6 (aunque rc1) acaba de llegar a Debian experimental. Probablemente sea posible llevarlo a Jessie, posiblemente con un pequeño ajuste.
Faheem Mitha

Actualizar. Esto terminó de construirse exitosamente para mí en Debian estable (jessie). Sin embargo, eso no significa que se instalará correctamente y no causará problemas. Un próximo paso razonable sería probarlo en una máquina virtual de prueba estable. ¿Le importa a alguien?
Faheem Mitha

Respuestas:


66

Nota editorial:
lea los comentarios a esta respuesta.


Debian no tiene Python 3.6 en sus repositorios, pero las pruebas lo tienen.

$ sudo nano /etc/apt/sources.list
# add
deb http://ftp.de.debian.org/debian testing main
$ echo 'APT::Default-Release "stable";' | sudo tee -a /etc/apt/apt.conf.d/00local
$ sudo apt-get update
$ sudo apt-get -t testing install python3.6
$ python3.6 -V

Usted pidió:

el procedimiento apropiado y oficialmente aceptado

pero debo señalar que esta no es una solución oficial porque usa repositorios de prueba.


6262
Advertencia: esto actualizará su sistema a un híbrido de cualquier versión de Debian que esté ejecutando ahora (probablemente 'estable') más 'inestable' más 'experimental'. Esto será mucho peor que simplemente actualizar a inestable y seleccionar algunos paquetes de experimental, o (mejor aún, mantenerse estable y elegir desde backports y / o inestable y / o experimental). Revertir esto será casi imposible. NO se recomienda a menos que tenga MUCHA experiencia con los paquetes debian y debian
cas

8
Respuesta editada para establecer la versión predeterminada de apt en estable. y eliminó el loco 'apt-get upgrade' (que actualiza todo a las últimas versiones disponibles en inestable o experimental, excepto cualquier cosa que pueda causar la eliminación de otro paquete). Eso debería hacer que este procedimiento sea mucho menos peligroso pero aún no seguro. Y todavía no se recomienda para principiantes. 'experimental' no es para uso casual, es para cosas raras, no probadas, posiblemente rotas que pueden entrar en conflicto o romper cosas incluso en 'inestable'. También se usa como área de preparación para grandes actualizaciones de paquetes múltiples.
cas

1
respuesta editada ya que python 3.6.2 está (ahora) en el testingrepositorio, que es más seguro para el usuario promedio.
m4p85r

44
No intente esto: le llevará años deshacerlo
user3728501

2
A partir del 15/09/2018 todavía es arriesgado: probé esto en una Raspberry Pi con Debian stretch y me encontré con fallas de segmentación después de la actualización de Python 3.6 de las pruebas obtenidas en un libc6 y libc6-dev actualizado.
drott

154

Puede instalar Python-3.6en Debian 8 de la siguiente manera:

wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xvf Python-3.6.9.tgz
cd Python-3.6.9
./configure --enable-optimizations --enable-shared
make -j8
sudo make altinstall
python3.6

Se recomienda usar de make altinstallacuerdo con el sitio web oficial .

Si desea pipser incluido, debe agregarlo --with-ensurepip=installa su llamada de configuración. Para más detalles ver ./configure --help.

Advertencia: make installpuede sobrescribir o enmascarar el binario de Python. make altinstallPor lo tanto, se recomienda en lugar de make installya que solo se instala exec_prefix/bin/pythonversion.

Algunos paquetes deben instalarse para evitar algunos problemas conocidos, consulte: Problemas comunes de compilación (actualizado)

Ubuntu / Debian:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev

Alternativa de libreadline-dev:

sudo apt install libedit-dev

Fedora / CentOS / RHEL (aws ec2):

sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
openssl-devel xz xz-devel libffi-devel

Alternativa de openssl-devel:

sudo yum install compat-openssl10-devel --allowerasing

Actualizar

Puede descargar lo último python-x.y.z.tar.gzdesde aquí .

Para configurar una versión predeterminada de Python y cambiar fácilmente entre ellas, debe actualizar su update-alternativesversión múltiple de Python.

Digamos que ha instalado el python3.7estiramiento en debian, use el comando whereis pythonpara localizar el binario ( */bin/python). p.ej:

/usr/local/bin/python3.7
/usr/bin/python2.7
/usr/bin/python3.5

Agregue las versiones de Python:

update-alternatives --install /usr/bin/python python /usr/local/bin/python3.7 50
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 40
update-alternatives --install /usr/bin/python python /usr/bin/python3.5 30

El python3.7con la 50prioridad ahora es su python predeterminado, python -Vse imprimirá:

Python 3.7.0b2

Para cambiar entre ellos, use:

update-alternatives --config python

Salida de muestra:

There are 3 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                      Priority   Status
------------------------------------------------------------
* 0            /usr/local/bin/python3.7   50        auto mode
  1            /usr/bin/python2.7         40        manual mode
  2            /usr/bin/python3.5         30        manual mode
  3            /usr/local/bin/python3.7   50        manual mode

Press <enter> to keep the current choice[*], or type selection number: 

55
¿No lo recomiendan los chicos de Debian checkinstall? De lo contrario, sería aconsejable instalarlo en /usr/localo /opt.
Ivan Anishchuk

3
De acuerdo con ./configure --helpPython 3.6 se instala /usr/localpor defecto.
Markus Strauss

2
¿Tiene problemas con esta respuesta (p. Ej., El módulo SSL no está disponible o falta zlib)? Ver: stackoverflow.com/a/41601137/972128
kkurian

11
Descargo de responsabilidad: esto lleva más de 20 horas en un dispositivo de baja potencia como el Pi zero.
Antoine Lizée

2
versión 3.7está fuera
Timo

32

La recomendación oficial es "en realidad no necesitas un software más nuevo"

No sufras el Síndrome Shiny New Stuff - DontBreakDebian | Wiki de Debian

La mayoría de los consejos en esa página están orientados a qué hacer si desea que el software esté disponible en todo el sistema, pero no creo que sea necesario en este caso.

Si obtiene las fuentes de Python, construya el intérprete 3.6 usando --prefixpara controlar dónde termina y luego use virtualenvcon la --pythonopción, entonces puede usar Python 3.6 sin afectar nada fuera de su proyecto.

El proceso podría ser algo como esto:

$ cd ~
$ mkdir pythonroot
$ mkdir opt
$ mkdir app
$ cd opt
$ wget <python tarball>
$ tar -xvf <python tarball>
$ cd python-3.6
$ ./configure --prefix="$HOME"/pythonroot
$ make
$ make install
$ cd ~
$ cd app
$ virtualenv venv --python ~/pythonroot/bin/python
$ . venv/bin/activate
[venv]$ which python
/home/<user>/pythonroot/bin/python

Si va a hacer esto, es posible que desee considerar la --enable-optimizationsbandera en el configurescript de Python , que parece habilitar algunas características como la optimización guiada por perfil. Aumenta los tiempos de construcción, pero parece dar como resultado un intérprete más rápido en un 10% más o menos de acuerdo con algunos puntos de referencia.


55
Esto sigue la regla general de Python de "La practicidad vence a la pureza". Tiendo a instalar pitones desde paquetes fuente en / opt / python-xyz y luego ejecuto aplicaciones desde sus propios virtualenvs.
zgoda

1
Nota importante: si va a hacer algo como esto: asegúrese de que cualquier usuario que ejecute su proceso de Python no pueda modificar el virtualenv
Gregory Nisbet

1
En mi opinión, esta es la mejor respuesta.
BringBackCommodore64

Gracias por este consejo En el pasado, rompí algunas instalaciones de Debian con el complemento de todo el sistema.
congelado

En mi instalación [venv]$ which pythonno me das /home/<user>/pythonroot/bin/python, pero en /home/<user>/app/venv/bin/python3cambio ... ¿por qué?
congelado

12

Es posible que desee echar un vistazo a pyenv: https://github.com/yyuu/pyenv . Para citar el pyenvtutorial en Amaral Lab:

Anteriormente conocido como Pythonbrew, pyenv le permite cambiar la versión global de Python, instalar múltiples versiones de Python, establecer versiones de Python específicas del directorio (proyecto), y sí crear / administrar entornos virtuales de Python ("virtualenvs"). Todo esto se hace en máquinas * estilo NIX (Linux y OS X) sin depender de Python y funciona a nivel de usuario, sin necesidad de ningún comando sudo.


3
Si bien este enlace puede responder la pregunta, es mejor incluir aquí las partes esenciales de la respuesta y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden volverse inválidas si la página vinculada cambia. - De la opinión
Archemar

Tienes razón, cambiará la respuesta.
schaiba

1
Creo que se entiende que incluye también las líneas de comandos esenciales también ...
not2qubit

Esto funciona bien, excepto cuando se trata de dispositivos integrados. Para "instalar" una versión de python, la fuente se descarga y compila localmente. Aparte de eso, pyenv es una gran opción y tiene mucha flexibilidad, incluida la ejecución de diferentes versiones de python en diferentes directorios y el manejo de los molestos problemas de PIP.
Brian Bulkowski

11

Mi forma preferida es usar Anaconda o Miniconda para mantener la última versión de Python y los paquetes instalados en Debian.

Todo está bien guardado en una carpeta, lo que hace que sea muy fácil eliminarlo más adelante si lo desea. El instalador también agrega la ruta a su bashrc (agréguela usted mismo si usa otro shell).

Viene con pip y también conda, que es otro administrador de paquetes que puede ser bueno para paquetes más complejos como numpy. Miniconda es una instalación básica, y Anaconda es una instalación completa con muchos paquetes, diseñados principalmente para el análisis de datos.

Con rapidez:

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

Lea y acepte la licencia, si no está utilizando bash add path: export PATH="/home/$USER/miniconda3/bin:$PATH"

Prueba:

$ python --version
Python 3.6.0 :: Continuum Analytics, Inc.

Instalar desde PyPi:

# pip install fava

Instalar desde conda:

# conda install numpy

Cuando desee eliminarlo, elimine la carpeta ~/miniconda3y la ruta en su bashrc.


Después de un sinfín de problemas con la instalación de Python desde la fuente, ¡esta versión funcionó a la perfección! Tenga en cuenta que si desea trabajar con virtualenv (contenedor) para la gestión del entorno, debe agregar el directorio de la biblioteca miniconda LD_LIBRARY_PATH. Por ejemplo: agregar export $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/miniconda3/lib"a su .bashrc.
jrast

"El instalador también agrega la ruta a su bashrc" Esa es la razón principal por la que no uso anaconda. Enmascarar silenciosamente un entorno python existente no es saludable, por decir lo menos.
MisterMiyagi

3

Debian no tiene Python 3.6 en sus repositorios. Aquí hay una instantánea del estado actual de Python3:

wheezy (oldstable) (python): interactive high-level object-oriented language (default python3 version)
    3.2.3-6: all
jessie (stable) (python): interactive high-level object-oriented language (default python3 version)
    3.4.2-2: amd64 arm64 armel armhf i386 mips mipsel powerpc ppc64el s390x
stretch (testing) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: amd64 arm64 armel armhf i386 mips mips64el mipsel ppc64el s390x
sid (unstable) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: alpha amd64 arm64 armel armhf hppa hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 m68k mips mips64el mipsel powerpc powerpcspe ppc64 ppc64el s390x sh4 sparc64 x32

Puedes ver esto aquí .

Puede instalar 3.6 desde la fuente o usando algo como Linuxbrew para la instalación de un directorio de inicio.


3

Con este

sudo echo "http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list

sudo apt-get update
sudo apt-get install -y python3.6

Trabajar exitosamente.

Más: establece python3.6 como predeterminado

sudo alias python=/usr/bin/python3.6

Ahora mismo :

python --version
Python 3.6

Debería leersudo echo "deb http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list
declinación

3
Esta respuesta es la misma que la respuesta aceptada, llegó un año después y, sin embargo, falla al dar los comandos correctos.
Hasta 마 SE

1

Python 3.6 (aunque rc1) acaba de llegar a Debian experimental. Pude construir con éxito esto en Debian estable (jessie). Vea los pasos finales de la compilación pegados a continuación.

Sin embargo, eso no significa que se instalará correctamente y no causará problemas. Un próximo paso razonable sería probarlo en una máquina virtual de prueba estable. Si a alguien le importa, podría intentarlo, o alguien más podría intentarlo.

Una versión de lanzamiento adecuada debería llegar a Debian inestable en breve.

dh_builddeb -a
dpkg-deb: building package `python3.6' in `../python3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-venv' in `../python3.6-venv_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-stdlib' in `../libpython3.6-stdlib_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-minimal' in `../python3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-minimal' in `../libpython3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6' in `../libpython3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dev' in `../python3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dev' in `../libpython3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dbg' in `../python3.6-dbg_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dbg' in `../libpython3.6-dbg_3.6.0~rc1-1_amd64.deb'.
 dpkg-genchanges  >../python3.6_3.6.0~rc1-1_amd64.changes
dpkg-genchanges: including full source code in upload
 dpkg-source --after-build python3.6-3.6.0~rc1
dpkg-buildpackage: full upload (original source is included)
Now running lintian...
W: python3.6 source: newer-standards-version 3.9.8 (current is 3.9.6)
N: 56 tags overridden (26 errors, 27 warnings, 3 info)
Finished running lintian.

0

A partir de septiembre de 2019, la última versión estable de Debian (buster) tiene Python 3.7. Por lo tanto, el procedimiento adecuado y oficialmente aceptado ahora sería actualizar a Debian Buster .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.