Como atualizo meu RPi3 para o Python 3.6?

39

O Python 3.6 acabou de sair. Tentei seguir estas instruções para compilar a partir de um tarball, mas ele foi makeinterrompido no comando, então encerrei o processo após 20 minutos ou mais.

Também notei que, enquanto o ./configurecomando estava sendo executado, várias verificações terminavam com "não". Preciso recuperar e instalar tudo o que fez isso?

Justin Palmer
fonte
Você provavelmente deve tentar estes: askubuntu.com/a/865569
Sagu

Respostas:

34

Como atualizo meu RPi3 para o Python 3.6?

Atualmente, apenas a instalação da fonte está disponível. As instruções que você referenciou estão corretas para a versão 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

Em um Raspbian fresco no Raspberry Pi 3 com um cartão SD de classe 10 (YMMV):

  • configure leva mais de 2 minutos
  • make leva cerca de 15 minutos (produz 8 avisos ao stderr)
  • sudo make install leva cerca de 2 minutos

Preciso recuperar e instalar tudo o que fez isso?

A menos que o configurescript relate um erro, a resposta é: não, claro que não.

configureexecuta uma série de verificações e usa os resultados como entrada para criar o Makefile. Os resultados dependem da arquitetura, recursos de hardware, etc. Esses não são requisitos para a compilação bem-sucedida. Uma das primeiras verificações é uma verificação do próprio Python 3.6, para a qual o resultado certamente será no.

make -j4 simplesmente usa todos os núcleos de 4 rpi no processo de fabricação (muito mais rápido)

techraf
fonte
Eu apenas tentei isso, mas está demorando para sempre. O configure demorou 134 minutos e o make já está em execução há mais de uma hora. Modelo RPi3, o mais recente raspbian. Alguma idéia de por que isso está demorando tanto?
Mistério
@ O seu cartão SD provavelmente está muito lento. Obtenha algo de uma boa marca (Sandisk, Samsung etc.) e verifique se é a classe 10 pelo menos (a Sandisk a chama de "Ultra").
Tarun
2
Pensei em comentar esse ditado, você precisa se lembrar de instalar os pacotes necessários ANTES de compilar e instalar, caso contrário o pip3 não funcionará devido a erros de SSL (sim, tive que esperar duas horas em uma instalação no meu Zero W ) Os pacotes necessários estão aqui: tecadmin.net/install-python-3-6-ubuntu-linuxmint
MortenMoulder
Erro no Python 3.7.2 na rb pi 3, resolvido executando sudo apt-get install libffi-devcomo sugerido nesta resposta stackoverflow.com/a/48045929/2343488
juliocesar
24

Eu recomendo que você verifique o gerenciador de pacotes Berryconda da jjhelmus . É basicamente uma versão mais atualizada da versão armv7l do Miniconda , e tem o pacote Python 3.6 disponível sem a necessidade de compilá-lo a partir do código-fonte.

Como alternativa, se você já condainstalou, pode simplesmente adicionar o canal rpi padrão do Berryconda e instalar o Python 3.6:

conda config --add channels rpi
conda install python=3.6
Gustavo Bezerra
fonte
Bem, isso é muito mais simples do que compilar a partir do código-fonte. Obrigado!
Ekevoo
11
Para completar, siga-se que comconda create -n py36 python=3.6
brittohalloran
Berryconda, que excelente solução!
DJK
@brittohaloran A partir deste comentário, ele instala o Python 3.6.6 no baseambiente conda , então você provavelmente deseja nomear o seu ambiente criado como algo descritivo do que você planeja colocar nesse ambiente (algo diferente py36).
hobs
Funciona como um encanto, a melhor e a mais simples solução
Grant
12

Para uma compilação rápida no Raspberry Pi 3, use o parâmetro -j4 no comando make:

make -j4
Hector Oliveros
fonte
3
Parecia muito rápido! Um minuto ou dois vs 15+ minutos sem -j4 !!!
JxAxMxIxN
11
O que esse param faz?
timbram
2
O parâmetro -j4 diz ao make para iniciar 4 trabalhos paralelos, para que ele possa usar todos os 4 núcleos da CPU ao mesmo tempo.
precisa saber é
4

Estou usando um RPi2 e consegui seguir o procedimento sugerido para instalar o python3.6. Mas, como apontado por um comentarista, tive problemas com o ssl quando tentei instalar pacotes com o pip .

Aprendi com outro tópico sobre outro assunto que preciso instalar o 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

a instalação do scipy com pip leva muito tempo (horas) e estou procurando uma solução. Eu voltarei a isso. o restante da instalação está agora em espera.

python3.6 -m pip install --user matplotlib

python3.6 -m pip install --user ipython

python3.6 - instalação do pip --user jupyter

python3.6 -m pip install --usuário pandas

python3.6 -m pip install --user sympy

python3.6 -m pip install - nariz do usuário

A vantagem de ter que compilar python3.6 uma segunda vez foi muito mais rápida na segunda vez. Por outro lado, leva muito tempo para instalar o numpy, e é por isso que eu divido a instalação do pacote.

vardaasen
fonte
A instalação de numpy e scipy é um obstáculo por si só e provavelmente deve ser feita a partir da fonte, não do pip, devido a dependências externas específicas da plataforma. Veja minha resposta para o problema aqui: raspberrypi.stackexchange.com/a/77856/79467 . Por outro lado, a instalação não é realmente mais rápida dessa maneira, mas a velocidade de execução será substancialmente.
teoguso 23/04
1

Você precisa instalar todas as dependências. Todas essas mensagens de aviso, mensagens de erro e verificações de "não" precisam ser endereçadas.

tlhIngan
fonte
Como você trata, por exemplo, estes:, checking Solaris LFS bug... noou checking getaddrinfo bug... no, ou checking for the Android API level... not Android? E o mais importante: como você lida com isso checking for python3.6... noao instalar o Python 3.6?
techraf
@techraf Estes específicos estão ok. Está verificando se há coisas para corrigir, não dependências. O último está apenas checando se você já possui o Python 3.6 antes de tentar instalá-lo.
tlhIngan
Portanto, embora você tenha sugerido ' Todas essas [] "não" verificações precisam ser tratadas ", essas específicas foram aceitáveis. Como posso saber quais estão ok, então? Eu tenho 170 "nãos". São:, checking for conio.h... noou checking for pthread_init... no, checking for libutil.h... noespecíficos e ok, ou precisam ser abordados?
techraf
Parece que está verificando arquivos e componentes de cabeçalho C que já podem estar instalados. Nesse caso, acho que você pode ignorar as "verificações", apenas ajudando o compilador a montar o makefile, conforme explicado em outra resposta. Erros e avisos precisam ser resolvidos com certeza, mas essas verificações são boas.
tlhIngan