¿Cómo actualizo mi RPi3 a Python 3.6?

39

Python 3.6 acaba de salir. Intenté seguir estas instrucciones para construir desde un tarball, pero quedó bloqueado en el makecomando, así que terminé el proceso después de 20 minutos más o menos.

También noté que mientras el ./configurecomando se estaba ejecutando, varios de los controles terminaron con "no". ¿Debo volver a revisar e instalar todo lo que hizo?

Justin Palmer
fuente
Probablemente debería probar estos: askubuntu.com/a/865569
Sagu

Respuestas:

34

¿Cómo actualizo mi RPi3 a Python 3.6?

A partir de hoy, solo está disponible la instalación desde la fuente. Las instrucciones a las que hizo referencia son correctas para la versión 3.6. Repetir:

wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
tar xzvf Python-3.6.0.tgz
cd Python-3.6.0/
./configure
make -j4
sudo make install

En un Raspbian nuevo en Raspberry Pi 3 con una tarjeta SD de clase 10 (YMMV):

  • configure toma más de 2 minutos
  • make toma aproximadamente 15 minutos (produce 8 advertencias para el stderr)
  • sudo make install toma alrededor de 2 minutos

¿Debo volver a revisar e instalar todo lo que hizo?

A menos que el configurescript informe un error, la respuesta es: no, por supuesto que no.

configurerealiza una serie de comprobaciones y utiliza los resultados como entrada para crear el Makefile. Los resultados dependen de la arquitectura, las características del hardware, etc. Estos no son requisitos para una compilación exitosa. Una de las primeras comprobaciones es una comprobación de Python 3.6 en sí, para lo cual el resultado será ciertamente no.

make -j4 simplemente usa los 4 núcleos rpi en el proceso de creación (mucho más rápido)

techraf
fuente
Acabo de intentar esto, pero está tomando una eternidad. configure tardó 134min y make ha estado funcionando durante más de una hora. Modelo RPi3, último raspbian. ¿Alguna idea de por qué esto está tomando tanto tiempo?
Misterio
@Mystery su tarjeta SD es probablemente demasiado lenta. Obtenga algo de una buena marca (Sandisk, Samsung, etc.) y asegúrese de que sea de clase 10 al menos (Sandisk lo llama "Ultra").
Tarun
2
Pensé en comentar este dicho, debe recordar instalar los paquetes requeridos ANTES de compilar e instalar, de lo contrario pip3 no funcionará debido a errores de SSL (sí, tuve que esperar unas 2 horas en una instalación en mi Zero W ) Los paquetes necesarios están aquí: tecadmin.net/install-python-3-6-ubuntu-linuxmint
MortenMoulder
Tengo un error con Python 3.7.2 en rb pi 3, resuelto ejecutando sudo apt-get install libffi-devcomo se sugiere en esta respuesta stackoverflow.com/a/48045929/2343488
juliocesar
24

Le recomiendo que consulte el administrador de paquetes Berryconda de jjhelmus . Básicamente es una versión más actualizada de la versión armv7l de Miniconda , y tiene el paquete Python 3.6 disponible sin necesidad de compilarlo desde la fuente.

Alternativamente, si ya lo ha condainstalado, puede intentar simplemente agregando el canal rpi predeterminado de Berryconda e instalando Python 3.6:

conda config --add channels rpi
conda install python=3.6
Gustavo Bezerra
fuente
Bueno, eso es mucho más simple que compilar desde la fuente. ¡Gracias!
Ekevoo
1
Para completar, siga conconda create -n py36 python=3.6
brittohalloran
Berryconda, ¡qué excelente solución!
DJK
@brittohaloran A partir de este comentario, esto instala Python 3.6.6 en el baseentorno conda , por lo que probablemente desee nombrar a su entorno creado como algo descriptivo de lo que planea poner en ese entorno (algo diferente a py36).
placas
Funciona como un encanto, la mejor y más simple solución
Grant
12

Para una compilación rápida en Raspberry Pi 3, use el parámetro -j4 en el comando make:

make -j4
Hector oliveros
fuente
3
Parecía bastante rápido! ¡Un minuto o dos frente a más de 15 minutos sin -j4!
JxAxMxIxN
1
¿Qué hace ese parámetro?
timbram
2
El parámetro -j4 le dice a make que inicie 4 trabajos paralelos, por lo que puede usar los 4 núcleos de CPU al mismo tiempo.
hdiogenes
4

Estoy usando un RPi2 y logré seguir el procedimiento sugerido para instalar python3.6. Pero como lo señaló un comentarista, tuve problemas con ssl cuando intenté instalar paquetes con pip .

Aprendí de otro hilo sobre un tema diferente que necesito instalar ssl antes de compilar.

sudo apt-get install libssl-dev
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
tar xzvf Python-3.6.0.tgz
cd Python-3.6.0/
./configure
make
sudo make install
python3.6 -V
python3.6 -m pip install --upgrade pip
python3.6 -m pip install --user numpy 
sudo apt-get update
sudo apt-get upgrade

sudo apt-get install libatlas-base-dev gfortran

python3.6 -m pip install --user scipy

La instalación de scipy con pip lleva mucho tiempo (horas) y estoy buscando una solución. Volveré a esto. el resto de la instalación ahora está en espera.

python3.6 -m pip install --user matplotlib

python3.6 -m pip install --user ipython

python3.6 -m pip install --user jupyter

python3.6 -m pip install --user pandas

python3.6 -m pip install --user sympy

python3.6 -m pip install --user nose

La ventaja de tener que compilar python3.6 por segunda vez fue una compilación mucho más rápida la segunda vez. Por otro lado, lleva mucho tiempo instalar numpy, y es por eso que dividí la instalación del paquete.

vardaasen
fuente
La instalación de numpy and scipy es un obstáculo en sí mismo y probablemente debería hacerse desde la fuente, no desde pip, debido a dependencias externas específicas de la plataforma. Vea mi respuesta al problema aquí: raspberrypi.stackexchange.com/a/77856/79467 . Por otro lado, la instalación no es realmente más rápida de esta manera, pero la velocidad de ejecución lo será, sustancialmente.
teoguso
1

Necesita instalar todas las dependencias. Todos esos mensajes de advertencia, mensajes de error y "no" se deben abordar.

tlhIngan
fuente
¿Cómo aborda, por ejemplo, estos:, checking Solaris LFS bug... noo checking getaddrinfo bug... no, o checking for the Android API level... not Android? Y lo más importante: ¿cómo aborda esto checking for python3.6... noal instalar Python 3.6?
techraf
@techraf Estos específicos están bien. Está buscando cosas para arreglar, no dependencias. El último solo verifica si ya tiene Python 3.6 antes de intentar instalarlo.
tlhIngan
Entonces, aunque sugirió ' Todas esas [] "no" comprobaciones deben abordarse ', esas específicas estaban bien. ¿Cómo puedo saber cuáles están bien, entonces? Tengo 170 "nos". ¿Son:, checking for conio.h... noo checking for pthread_init... no, o checking for libutil.h... noespecíficos y aceptables, o necesitan ser abordados?
techraf
Parece que está buscando archivos de encabezado C y componentes que ya pueden estar instalados. En este caso, creo que puede ignorar los "controles", solo está ayudando al compilador a armar el archivo MAKE, como se explica en otra respuesta. Los errores y las advertencias deben abordarse con seguridad, pero estas comprobaciones están bien.
tlhIngan