Як оновити RPi3 на Python 3.6?


39

Python 3.6 щойно вийшов. Я намагався виконувати ці вказівки, щоб побудувати з тарболу, але він завис makeкоманду, тому я припинив процес через 20 хвилин або близько того.

Я також зауважив, що в той час, коли ./configureкоманда йшла, ряд перевірок закінчувався "ні". Чи потрібно перебирати назад і встановлювати все, що робив таке?


Напевно, слід спробувати такі: askubuntu.com/a/865569
Сагу

Відповіді:


34

Як оновити RPi3 на Python 3.6?

На сьогоднішній день доступна лише установка з джерела. Інструкції, на які ви посилалися, є правильними для версії 3.6. Повторювати:

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

На свіжому Raspbian на Raspberry Pi 3 з SD-класом класу 10 (YMMV):

  • configure займає понад 2 хвилини
  • make займає близько 15 хвилин (він дає 8 попереджень для більш жорсткого)
  • sudo make install займає близько 2 хвилин

Чи потрібно перебирати назад і встановлювати все, що робив таке?

Якщо configureсценарій не повідомляє про помилку, відповідь така: ні, звичайно, ні.

configureвиконує серію перевірок і використовує результати як вхідні дані для створення Makefile. Результати залежать від архітектури, можливостей обладнання тощо. Це не вимоги для успішної компіляції. Однією з перших перевірок є перевірка самого Python 3.6, результатом якого безумовно буде no.

make -j4 просто використовує всі 4 ядра в секунду в процесі виготовлення (набагато швидше)


Я просто спробував це, але це прийняло назавжди. конфігурація зайняла 134 хв., і make працює вже більше години. Модель RPi3, остання розп’янка. Будь-яка ідея, чому це займає так довго?
Таємниця

@Mystery ваша SD-карта, ймовірно, занадто повільна. Отримайте щось від хорошого бренду (Sandisk, Samsung тощо) і переконайтеся, що це хоча б 10 клас (Sandisk називає це "Ultra").
Тарун

2
Думав, що я прокоментую цю приказку, вам потрібно пам’ятати, щоб встановити необхідні пакети перед тим, як збирати та встановлювати, інакше pip3 не працюватиме через помилки SSL (так, мені довелося чекати приблизно 2 години на встановлення на моєму Zero W ). Необхідні пакунки тут: tecadmin.net/install-python-3-6-ubuntu-linuxmint
MortenMoulder

Є помилка з Python 3.7.2 в гь пі 3, вирішується executeing sudo apt-get install libffi-devяк запропоновано в цій відповіді stackoverflow.com/a/48045929/2343488
Соарес Еспіндола

24

Я настійно рекомендую вам перевірити Berryconda менеджер пакетів по jjhelmus . Це в основному більш сучасна версія armv7l версії Miniconda , і пакет Python 3.6 доступний без необхідності компілювати його з джерела.

Крім того, якщо ви вже condaвстановили, ви можете спробувати просто додати rpi канал за замовчуванням Berryconda та встановити Python 3.6:

conda config --add channels rpi
conda install python=3.6

Ну, це набагато простіше, ніж компіляція з джерела. Дякую!
Екево

1
Для повноти слідкуйте за цим питаннямconda create -n py36 python=3.6
brittohalloran

Берріконда, яке чудове рішення!
DJK

@brittohaloran Відповідно до цього коментаря, це встановлює Python 3.6.6 в baseсередовищі conda , тому ви, ймовірно, хочете назвати створене env чимось описовим, що ви плануєте поставити в цю env (щось інше, ніж py36).
варильні панелі

Працює як шарм, найкраще і найпростіше рішення
Грант

12

Для швидкої збірки в Raspberry Pi 3 використовуйте параметр -j4 в команді make:

make -j4

3
Здавалося, досить швидко! Хвилина-дві проти 15+ хвилин без -j4 !!!
JxAxMxIxN

1
Що робить цей парам?
тембрам

2
Параметр -j4 повідомляє make запустити 4 паралельних завдання, тож він може одночасно використовувати всі 4 ядра CPU.
hdiogenes

4

Я використовую RPi2, і мені вдалося виконати запропоновану процедуру встановлення python3.6. Але, як зазначив коментатор, у мене виникли проблеми з ssl, коли я намагався встановити пакети з pip .

Я дізнався з іншої теми на іншу тему, що мені потрібно встановити ssl, перш ніж компілювати.

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 - користувач scipy

установка scipy з pip займає дуже багато часу (годин), і я шукаю рішення. Я повернусь до цього. решта установки тепер призупинена.

python3.6 -m pip install - користувач matplotlib

python3.6 -m pip install - користувач ipython

python3.6 -m pip install - юзер юпітер

python3.6 -m pip install - користувальницькі панди

python3.6 -m pip install - симпатія користувача

python3.6 -m pip install - ніс користувача

Намагання компілювати python3.6 вдруге було набагато швидше компілювати вдруге. З іншого боку, потрібен тривалий час, щоб встановити нуд, і саме тому я розділив інсталяцію пакета.


Установка numpy та scipy - це перешкода сама по собі, і, ймовірно, має бути зроблена з джерела, а не з pip, через залежність від зовнішньої платформи. Дивіться мою відповідь на проблему тут: raspberrypi.stackexchange.com/a/77856/79467 . З іншого боку, цей спосіб не дуже швидкий, але швидкість виконання буде значною.
teoguso

1

Потрібно встановити всі залежності. Усі ці попереджувальні повідомлення, повідомлення про помилки та перевірки "ні" не потребують вирішення.


Як ви звертаєтеся, наприклад, до таких: checking Solaris LFS bug... noабо checking getaddrinfo bug... no, або checking for the Android API level... not Android? І найголовніше: як ви вирішуєте це checking for python3.6... noпри встановленні Python 3.6?
techraf

@techraf Ці конкретні в порядку. Це перевірка речей на виправлення, а не залежність. Останній лише перевіряє, чи вже у вас є Python 3.6 перед тим, як спробувати його встановити.
tlhIngan

Отже, хоча ви запропонували " Усі ці []" ні "перевірки не потрібно вирішувати ", ці конкретні перевірки були нормальні. Як я можу знати, що тоді добре? У мене вийшло 170 «ніс». Це: checking for conio.h... noабо checking for pthread_init... no, або checking for libutil.h... noконкретні, і добре, або потрібно вирішувати?
techraf

Здається, це перевірка наявності файлів заголовків C та компонентів, які вже можуть бути встановлені. У цьому випадку я думаю, що ви можете ігнорувати "чеки", це просто допомагає компілятору скласти makefile, як пояснено в іншій відповіді. Помилки та попередження потрібно вирішити точно, але ці перевірки чудово.
tlhIngan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.