La mejor manera de ejecutar python 3.7 en Ubuntu 16.04 que viene con python 3.5

18

Me gustaría evitar backports, siempre parecen estropear mis paquetes.

Entonces pensé que herramientas como conda / virtualenv / quizás incluso docker pueden ayudar. ¿Cuál es la forma más simple / limpia de trabajar con Python 3.7 en mi sistema?

benji
fuente
1
Mira en pyenv
Naftuli Kay

Respuestas:

33

Esto debería ponerlo en funcionamiento con Python 3.7 en Ubuntu 16.04

# Install requirements
sudo apt-get install -y build-essential \
checkinstall \
libreadline-gplv2-dev \
libncursesw5-dev \
libssl-dev \
libsqlite3-dev \
tk-dev \
libgdbm-dev \
libc6-dev \
libbz2-dev \
zlib1g-dev \
openssl \
libffi-dev \
python3-dev \
python3-setuptools \
wget

# Prepare to build
mkdir /tmp/Python37
cd /tmp/Python37

# Pull down Python 3.7, build, and install
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
tar xvf Python-3.7.0.tar.xz
cd /tmp/Python37/Python-3.7.0
./configure
sudo make altinstall

Entonces simplemente llamarías a Python así:

python3.7 ./yourScript.py

Esta es una captura de pantalla de varias versiones de Python coexistentes en un contenedor acoplable y cómo se pueden distinguir:

Cómo llamar a Python diferentes versiones

Pip debería haberse instalado también con esta instalación. Para instalar paquetes use este formato:

pip3.7 --version
Sn3akyP3t3
fuente
1
Esto funciona como un encanto. Pude instalar python3.7. La única advertencia es usar sudo make altinstall ya que el acceso al directorio no era para el usuario normal. Todos los apt-get también se instalaron usando sudo. Muchas gracias por compartir la información.
Doogle
La respuesta aceptada funcionó bien para mí, con una advertencia; También tuve que apt install libffi-devevitar el siguiente error en el paso altinstall (Ubuntu 16.04 LTS):python ModuleNotFoundError: No module named '_ctypes'
moshisushi
@moshisushi También me encontré con ese problema cuando estaba trabajando para lograr una resolución. Por esa razón, ya incluí libffi-dev en la instalación inicial.
Sn3akyP3t3
1
Comandos prefijados de @Doogle con sudo donde sea necesario. Gracias por señalar eso. Estos pasos se extrajeron de los pasos de compilación de mi contenedor Docker que asumían como usuario root.
Sn3akyP3t3
3

No recomendaría jugar manualmente con instalaciones y rutas de código fuente. Usepyenv y ahórrese el problema.

Todo lo que tienes que hacer es:

  • Ejecuta el pyenvinstalador
  • Sigue las instrucciones
  • Instale las versiones de Python que necesita
  • Elija qué versión de Python desea usar para un directorio dado, o globalmente

Por ejemplo, para instalar 3.7, verifique qué versiones están disponibles:

pyenv install -l | grep 3.7

Entonces corre:

pyenv install 3.7.1

Ahora, puedes elegir tu versión de Python:

pyenv global 3.7.1

Esto cambia su pythonpunto a 3.7.1. Si quieres el sistema python, ejecuta:

pyenv global system

Para verificar qué versiones de Python están disponibles, ejecute pyenv versions.

slhck
fuente
0

Puede descargar el código fuente desde www.python.org, compilarlo y compilarlo desde el código fuente, y luego:

1) Anteponga la ruta a los ejecutables de Python PATHy a las bibliotecas LD_LIBRARY_PATH.

2) Haz lo que hice y compila y construye desde la fuente y crea enlaces simbólicos a los ejecutables en /usr/bin. Puede llamarlo python37para distinguirlo del python 3.5que ya está instalado.

El primer método lo usará en su entorno de forma predeterminada, mientras que con el segundo, tendrá que especificarlo con el comando que utilizó para el enlace simbólico. Es posible que desee usar el segundo método primero antes de que sea el predeterminado, ya python 3.7que todavía está en desarrollo.

Nasir Riley
fuente