Как установить последнюю версию Scipy на Raspberry Pi

В настоящее время у меня Raspbian OS

и я попробовал:

sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

, который отлично работал, но установил старую версию (0.10)

и

sudo apt-get install libatlas-base-dev gfortran python-pip

sudo pip install scipy

, который после более чем часа работы закончил с некоторыми ошибками.

Что вы сделали, чтобы установить Scipy 0.12 на свою малину?

5 голосов | спросил zurfyx 7 J000000Sunday13 2013, 02:11:38

2 ответа


3

TL; DR: перейдите к последнему абзацу, чтобы узнать, как увеличить пространство подкачки и избежать засорения памяти. Кроме того, не используйте pip для numpy и scipy.

Чтобы получить последнюю версию scipy на малине Pi, вам нужно построить из источника. Основная причина заключается в том, что scipy полагается на скомпилированные библиотеки C и fortran, которые необходимо скомпилировать по одной и той же архитектуре. Обычно pip install будет получать готовые пакеты для вас, но архитектура ARM от Raspberry Pi не поддерживается.

Если это все, что вам было нужно, было бы относительно легко (основные инструкции можно найти здесь и приведены ниже), но есть дополнительная проблема с малиной pi, которую я понял только после недели исследований и проб и ошибок (пропустите в конце, если вам просто нужно исправить), что, по-моему, связано с небольшим объемом доступной памяти.

Я просто попытаюсь обобщить весь процесс (чтобы люди не могли прыгать через интернет, как я).

Требования

Существует несколько требований к созданию scipy. Что касается пакетов python, вам понадобится numpy, cython, setuptools и (если вы хотите создать документацию) Sphinx. Вы должны попробовать и использовать версию этих пакетов, которая поставляется вместе с Raspbian (в пакетах, таких как python3-numpy), но их, возможно, потребуется создать отдельно (ОТ).

Что касается требований к системе, вам понадобятся несколько пакетов, которые можно установить с помощью apt-get, а именно:

  • Математическая библиотека BLAS /LAPACK с заголовками разработки, например. libopenblas-base и libopenblas-dev;
  • python-dev;
  • Компиляторы C и Fortran, gcc и gfortran

Наконец, вам нужен исходный код, который вы можете скачать из здесь (Scipy 1.0.0 - последняя стабильная версия, которую я пишу). Тогда это просто вопрос tar -xzvf scipy-v1.0.0.tar.gz cd scipy

Компиляция источника

В этот момент, если вы начнете процесс сборки, все будет хорошо, но он повиснет через несколько минут.

Добавление большего пространства подкачки

Это связано с тем, что скрипт компиляции занимает всю оперативную память и свопирует память, создавая несколько процессов (и, следовательно, реплицируя память). Проблема в том, что в Raspberry Pi пространство подкачки особенно мало (только 100 Мбайт, я думаю), в то время как норма будет иметь тот же размер вашей оперативной памяти.

Как объясняется здесь и здесь , место подкачки может следует набирать следующее:

sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1

, который даст вам 1 ГБ пространства подкачки.

Затем можно окончательно построить и установить с помощью

python3 setup.py build

python3 setup.py install --user

(вы можете сбросить --user flag, если вы хотите установить его в системном масштабе, но вам понадобятся права root).

Наконец, удалите дополнительную свопировку и восстановите значение по умолчанию:

sudo swapoff /var/swap.1
sudo rm /var/swap.1
ответил teoguso 16 Jpm1000000pmTue, 16 Jan 2018 21:36:52 +030018 2018, 21:36:52
2

Я не пользователь python, но (вероятная) причина для старой версии заключается в том, что в политике debian иногда требуется избыточное количество времени для обновления версий, плюс пакет может быть неясным (следовательно, обновляется даже меньше) , а также сам raspbian довольно неясен по отношению к debian (следовательно, пакеты там обновляются еще меньше). То есть, это следствие доступных ресурсов (людей, которые поддерживают пакеты, которые обычно не являются разработчиками восходящего потока).

  

после более чем часа работы закончились некоторые ошибки

Предположительно, это проблема с компиляцией одного или нескольких модулей, хотя на самом деле вы не сказали, что такое ошибка. Компиляция модулей python должна в основном работать на pi, я думаю, но имейте в виду, что это необычная архитектура для таких, с библиотеками, скомпилированными специально для нее. К сожалению, это приводит к риску ранее незаметных ошибок в той или иной части поверхности (если вы хотите найти ошибки на компилированном языке - части некоторых модулей python находятся в C - попробуйте компилировать код на нескольких разных платформах, lol ...). Поиск виновника потребует немного больше работы и участия в конкретных ошибках.

ответил goldilocks 7 J000000Sunday13 2013, 17:58:55

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132