Проблема с использованием Azure-iothub-device-client на Raspberry Pi - PullRequest
0 голосов
/ 08 сентября 2018

Я пытаюсь использовать Python SDK для IoT Hub, запустив пример кода: «SimulatedDevice.py», но код разбивается на одно и то же исключение на 3 разных raspbian устройствах, а также в моей среде PyCharm. При попытке запустить пример SimulatedDevice.py на моем Raspberry Pi код всегда ломается с:

"ImportError: libboost_python-py27.so.1.62.0: невозможно открыть файл общего объекта: нет такого файла или каталога"

исходная ошибка: "import iothub_client"

Я установил pip azure-iothub-device-client, а также подтвердил, что версия python2.7 даже пытается переустановить python. Это любопытно, так как когда я запускаю точно такой же файл на моем Windows CMD, пример кода SimulatedDevice.py работает нормально, только в терминале Python и на Raspberry Pi я получаю эту ошибку.

1 Ответ

0 голосов
/ 08 сентября 2018

Ciao,

как сказано в этом великом посте

1-й раствор

  • ты бегаешь по распбиану или Джесси? Вы, вероятно, хотите растянуть сейчас. это последняя стабильная версия, которую мы тестируем на
  • установлен ли пакет libboost-python1.62.0? если нет, вы можете установить его с помощью:
    apt-get install libboost-python1.62.0

2-й раствор

Пользователь [ko5win] в этой ссылке с той же проблемой подтвердил, что свежий Raspberry Pi с натяжкой и правильная версия libboost решили проблему с версией pip

Другой пользователь [sergiomfsilva] дает альтернативную процедуру:

Окружающая среда

Используемая ОС и версия

  • Linux raspberrypi 4.14.30-v7 + # 1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU / Linux
  • Используемая среда исполнения Python: Python 3.5.3
  • Используемая версия SDK: 1.3.1

Используются обходные шаги

Получить изображения и подготовиться к работе:

  • получить последнее изображение Raspbian Lite
  • флэш-карта microSD для Raspberry Pi3
  • ботинок с малиновым пи
  • войти в систему с помощью пользователя Пи
  • введите команду
    sudo su
  • перейти в корневую папку
    cd /root

Обновите систему и сделайте некоторые проверки времени

  • Выполните следующие команды:
    apt-get update && apt-get upgrade
    apt-get install ntp

  • Проверьте дату RPI с помощью команды
    date

После даты все в порядке.

Примечание. Настройте файл ntp.conf, если обнаружены проблемы с датой.

Установите необходимые пакеты и просмотрите сообщение об ошибке

Установить необходимые пакеты

apt-get install -y git cmake build-essential curl libcurl4-openssl-dev libssl-dev uuid-dev python3-pip

SDK клонирование

git clone --recursive https://github.com/Azure/azure-iot-sdk-python.git

Установить клиентский пакет устройства с помощью pip3

pip3 install azure-iothub-device-client

Перейти к папке с образцами

cd azure-iot-sdk-python/device/samples/

Запустите пример кода

python3 iothub_client_sample.py

Ошибка должна быть такой же:

Traceback (последний вызов был последним):
Файл «iothub_client_sample.py», строка 10, в
импорте iothub_client File "/Usr/local/lib/python3.5/dist-packages/iothub_client/init.py", строка 1 в
из .iothub_client import *
ImportError: libboost_python-py34.so.1.55.0: невозможно открыть общий объект Файл: Нет такого файла или каталога

Создание новых библиотек и их применение

  • Перейдите в папку сборки для linux
    cd /root/azure-iot-sdk-python/build_all/linux
  • Выполнить настройку
    ./setup.sh --python-version 3.5
  • Замените openssl dev на gnutls dev, о котором уже сообщалось, как решение проблемы с выпадением памяти.
    apt remove libcurl4-openssl-dev
    apt install libcurl4-gnutls-dev
  • сборка библиотек
    ./build.sh --build-python 3.5
  • Перейти в корневую папку cd /root
  • Переместить созданную библиотеку в путь Python iothub_client
    mv azure-iot-sdk-python/device/samples/iothub_client.so /usr/local/lib/python3.5/dist-packages/iothub_client/iothub_client.so
  • Перейти в папку с образцами
    cd azure-iot-sdk-python/device/samples/
  • Запустите пример кода
    python3 iothub_client_sample.py

Это решает проблему, обнаруженную и работает в малине. Это не решило эту проблему, поскольку она связана с пакетом pip. Чтобы решить новый пакет pip с библиотекой и обновленной версией Python

...