在Raspberry Pi上使用Azure-iothub-device-client的问题

时间:2018-09-08 05:10:25

标签: python azure raspberry-pi azure-iot-hub

我试图通过运行示例代码“ SimulatedDevice.py”来将Python SDK用于IoT中心,但是该代码在3种不同的raspbian设备以及我的PyCharm环境中因相同的异常而中断。 在尝试在我的Raspberry Pi上运行SimulatedDevice.py示例时,代码总是以以下字符中断:

“导入错误:libboost_python-py27.so.1.62.0:无法打开共享对象文件:没有这样的文件或目录”

初始错误:“导入iothub_client”

我已经pip安装了azure-iothub-device-client,并确认版本为python2.7,甚至尝试重新安装python。这很好奇,因为当我在Windows CMD上运行完全相同的文件时,SimulatedDevice.py示例代码功能很好,它仅在Python终端中,并且在Raspberry Pi上却出现此错误。

1 个答案:

答案 0 :(得分:0)

Ciao

this great post

中所述

第一个解决方案

  • 您正在跑步覆盆子拉伸运动或jessie吗?您现在可能要拉伸。这是最新的稳定器,也是我们要测试的稳定器
  • 是否安装了libboost-python1.62.0软件包?如果没有,则可以使用以下命令进行安装:
    apt-get install libboost-python1.62.0

第二个解决方案

该链接中的用户[ko5win]遇到了相同的问题,确认具有拉伸能力的新鲜树莓派和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图像
  • 用于Raspberry Pi3的闪存microSD卡
  • 使用树莓派
    引导
  • 使用pi用户
    登录
  • 执行命令
    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

错误必须相同:

  

回溯(最近通话最近):
文件   
导入中的“ iothub_client_sample.py”,第10行   iothub_client文件   “ /usr/local/lib/python3.5/dist-packages/iothub_client/init.py”,   .iothub_client import中
中的第1行*
  ImportError:libboost_python-py34.so.1.55.0:无法打开共享库   文件:没有这样的文件或目录

构建新库并应用

  • 转到为Linux构建文件夹
    cd /root/azure-iot-sdk-python/build_all/linux
  • 运行安装程序
    ./setup.sh --python-version 3.5
  • 用gnutls dev替换openssl 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包有关。解决库和python版本已更新的新pip包