Как мне обновить мой RPi3 до Python 3.6?


39

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

Я также заметил, что во время выполнения ./configureкоманды ряд проверок заканчивался «нет». Нужно ли забрать обратно и установить все, что сделал такое?


Вы, вероятно, должны попробовать это: askubuntu.com/a/865569
Sagu

Ответы:


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 предупреждений в stderr)
  • sudo make install занимает около 2 минут

Нужно ли забрать обратно и установить все, что сделал такое?

Если configureскрипт не сообщает об ошибке, ответ: нет, конечно, нет.

configureвыполняет серию проверок и использует результаты в качестве входных данных для создания Makefile. Результаты зависят от архитектуры, аппаратных функций и т. Д. Это не требования для успешной компиляции. Одна из первых проверок - это проверка самого Python 3.6, результатом которого, безусловно, будет no.

make -j4 просто использует все 4 ядра RPI в процессе сборки (намного быстрее)


Я только что попробовал это, но это навсегда. Конфигурирование заняло 134 минуты, и make работал уже более часа. Модель RPi3, последняя распбиан. Есть идеи, почему это так долго?
Тайна

@ Тайна вашей 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 в rb pi 3, решаемая путем выполнения, sudo apt-get install libffi-devкак указано в этом ответе stackoverflow.com/a/48045929/2343488
juliocesar

24

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

С другой стороны , если у вас уже condaустановлена, то можно попробовать просто добавив по умолчанию Berryconda в RPI канал и установка Python 3.6:

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

Ну, это намного проще, чем компиляция из исходного кода. Благодарность!
Ekevoo

1
Для полноты, conda create -n py36 python=3.6
следите

Берриконда, какое отличное решение!
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 ядра процессора одновременно.
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 установить libatlas-base-dev gfortran

python3.6 -m pip install --user scipy

установка scipy с pip занимает очень много времени (часов), и я ищу решение. Я вернусь к этому. остальная часть установки теперь приостановлена.

python3.6 -m pip установить --user matplotlib

python3.6 -m pip установить --user ipython

python3.6 -m pip установить --user jupyter

python3.6 -m pip установить --user pandas

python3.6 -m pip установить --user sympy

python3.6 -m pip установить --user нос

Преимущество компиляции python3.6 во второй раз было намного быстрее, чем во второй раз. С другой стороны, установка numpy занимает много времени, и поэтому я разделил установку пакета.


Установка numpy и scipy сама по себе является препятствием и, вероятно, должна выполняться из исходного кода, а не из pip, из-за внешних зависимых от платформы зависимостей. Смотрите мой ответ на проблему здесь: raspberrypi.stackexchange.com/a/77856/79467 . С другой стороны, установка не очень быстрая, но скорость выполнения будет существенно.
Теогусо

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 "NOS". Являются ли:, checking for conio.h... noили checking for pthread_init... no, или checking for libutil.h... noконкретно-и-хорошо, или нужно решать?
techraf

Похоже, это проверка на наличие заголовочных файлов и компонентов C, которые могут быть уже установлены. В этом случае, я думаю, вы можете игнорировать «проверки», это просто помогает компилятору собрать make-файл, как объяснено в другом ответе. Ошибки и предупреждения должны быть устранены наверняка, но эти проверки в порядке.
tlhIngan
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.