Bagaimana cara saya memperbarui RPi3 ke Python 3.6?

39

Python 3.6 baru saja keluar. Saya mencoba mengikuti instruksi ini untuk membangun dari tarball, tetapi maketerhenti pada perintah, jadi saya menghentikan proses setelah 20 menit atau lebih.

Saya juga memperhatikan bahwa ketika ./configureperintah sedang berjalan, sejumlah cek berakhir dengan "tidak." Apakah saya perlu mengambil kembali dan menginstal semua yang melakukan itu?

Justin Palmer
sumber
Anda mungkin harus mencoba ini: askubuntu.com/a/865569
Sagu

Jawaban:

34

Bagaimana cara saya memperbarui RPi3 ke Python 3.6?

Sampai hari ini, hanya instalasi dari sumber yang tersedia. Instruksi yang Anda referensikan benar untuk versi 3.6. Mengulang:

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

Pada Raspbian segar di Raspberry Pi 3 dengan kartu SD kelas 10 (YMMV):

  • configure memakan waktu lebih dari 2 menit
  • make membutuhkan sekitar 15 menit (ini menghasilkan 8 peringatan untuk stderr)
  • sudo make install membutuhkan waktu sekitar 2 menit

Apakah saya perlu mengambil kembali dan menginstal semua yang melakukan itu?

Kecuali jika configureskrip melaporkan kesalahan, jawabannya adalah: tidak, tentu saja tidak.

configuremelakukan serangkaian pemeriksaan dan menggunakan hasilnya sebagai input untuk membuat Makefile. Hasilnya tergantung pada arsitektur, fitur perangkat keras, dll. Ini bukan persyaratan untuk kompilasi yang berhasil. Salah satu pemeriksaan pertama adalah pemeriksaan untuk Python 3.6 itu sendiri, yang hasilnya pasti no.

make -j4 hanya menggunakan semua 4 rpi core dalam proses make (jauh lebih cepat)

techraf
sumber
Saya baru saja mencoba ini, tetapi butuh selamanya. configure membutuhkan waktu 134 menit dan make telah berjalan lebih dari satu jam sekarang Model RPi3, raspbian terbaru. Adakah ide mengapa ini memakan waktu begitu lama?
Misteri
@Mengingat kartu SD Anda mungkin terlalu lambat. Dapatkan sesuatu dari merek yang bagus (Sandisk, Samsung dll.) Dan pastikan itu setidaknya kelas 10 (Sandisk menyebutnya "Ultra").
Tarun
2
Kupikir saya akan mengomentari pepatah ini, Anda harus ingat untuk menginstal paket yang diperlukan SEBELUM mengkompilasi dan menginstal, jika tidak pip3 tidak akan berfungsi karena kesalahan SSL (ya, saya harus menunggu selama 2 jam pada instalasi di Zero W saya ). Paket-paket yang diperlukan ada di sini: tecadmin.net/install-python-3-6-ubuntu-linuxmint
MortenMoulder
Mendapat kesalahan dengan Python 3.7.2 di rb pi 3, diselesaikan dengan mengeksekusi sudo apt-get install libffi-devseperti yang disarankan dalam jawaban ini stackoverflow.com/a/48045929/2343488
juliocesar
24

Saya sangat menyarankan Anda memeriksa Berryconda manajer paket oleh jjhelmus . Ini pada dasarnya adalah versi yang lebih up-to-date dari versi armv7l dari Miniconda , dan memiliki paket Python 3.6 tersedia tanpa perlu mengkompilasinya dari sumber.

Atau, jika Anda sudah condamenginstal, Anda dapat mencoba cukup menambahkan saluran rpi default Berryconda dan menginstal Python 3.6:

conda config --add channels rpi
conda install python=3.6
Gustavo Bezerra
sumber
Nah, itu jauh lebih sederhana daripada kompilasi dari sumber. Terima kasih!
Ekevoo
1
Untuk kelengkapan, ikuti itu denganconda create -n py36 python=3.6
brittohalloran
Berryconda, solusi yang luar biasa!
DJK
@brittohaloran Pada komentar ini menginstal Python 3.6.6 di baselingkungan conda , jadi Anda mungkin ingin memberi nama env Anda sesuatu yang dibuat deskriptif dari apa yang Anda rencanakan untuk dimasukkan ke dalam env itu (sesuatu selain dari py36).
Hobs
Bekerja seperti pesona, solusi terbaik dan paling sederhana
Grant
12

Untuk build cepat di Raspberry Pi 3 gunakan param -j4 pada perintah make:

make -j4
Hector Oliveros
sumber
3
Tampak cukup cepat! Satu atau dua menit vs 15+ menit tanpa -j4 !!!
JxAxMxIxN
1
Apa yang param lakukan?
timbram
2
Param -j4 memberitahu make untuk memulai 4 pekerjaan paralel, sehingga dapat menggunakan semua 4 core CPU secara bersamaan.
hdiogenes
4

Saya menggunakan RPi2, dan saya berhasil mengikuti prosedur yang disarankan untuk menginstal python3.6. Tapi seperti yang ditunjukkan oleh komentator, saya mengalami masalah dengan ssl ketika saya mencoba menginstal paket dengan pip .

Saya belajar dari utas lain tentang topik berbeda yang harus saya instal ssl sebelum saya kompilasi.

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 instal --user scipy

instalasi scipy dengan pip membutuhkan waktu sangat lama (jam) dan saya mencari solusinya. Saya akan kembali ke ini. sisa instalasi sekarang ditunda.

python3.6 -m pip instal --user matplotlib

python3.6 -m pip instal --user ipython

python3.6 -m pip instal --user jupyter

python3.6 -m pip instal --user panda

python3.6 -m pip instal --user sympy

python3.6 -m pip instal --user nose

Kelebihan dari harus mengkompilasi python3.6 untuk kedua kalinya adalah kompilasi yang lebih cepat untuk kedua kalinya. Di sisi lain itu membutuhkan waktu lama untuk menginstal numpy, dan itulah sebabnya saya memisahkan instalasi paket.

vardaasen
sumber
Pemasangan numpy dan scipy adalah rintangan dengan sendirinya dan mungkin harus dilakukan dari sumber, bukan dari pip, karena ketergantungan platform-spesifik eksternal. Lihat jawaban saya untuk masalah di sini: raspberrypi.stackexchange.com/a/77856/79467 . Di sisi lain, pemasangannya tidak terlalu cepat dengan cara ini, tetapi kecepatan runtime akan lebih banyak.
teoguso
1

Anda perlu menginstal semua dependensi. Semua pesan peringatan, pesan kesalahan, dan cek "tidak" perlu diatasi.

tlhIngan
sumber
Bagaimana Anda mengatasi contoh ini:, checking Solaris LFS bug... noatau checking getaddrinfo bug... no, atau checking for the Android API level... not Android? Dan yang paling penting: bagaimana Anda mengatasi ini checking for python3.6... noketika menginstal Python 3.6?
techraf
@ Techraf Yang spesifik ini ok. Ini memeriksa hal-hal untuk diperbaiki, bukan dependensi. Yang terakhir hanya memeriksa apakah Anda sudah memiliki Python 3.6 sebelum mencoba menginstalnya.
tlhIngan
Jadi, meskipun Anda menyarankan ' Semua [] "tidak" cek perlu diatasi ', yang spesifik tidak masalah. Bagaimana saya bisa tahu mana yang ok? Saya mendapat 170 "no". Apakah:, checking for conio.h... noatau checking for pthread_init... no, atau checking for libutil.h... nospesifik-dan-ok, atau perlu ditangani?
techraf
Kedengarannya seperti memeriksa file header C dan komponen yang mungkin sudah diinstal. Dalam hal ini, saya pikir Anda dapat mengabaikan "cek", itu hanya membantu kompiler menyusun makefile, seperti yang dijelaskan dalam jawaban lain. Kesalahan dan peringatan perlu diatasi dengan pasti, tetapi pemeriksaan ini baik-baik saja.
tlhIngan