1

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

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

初始错误:“导入 iothub_client”

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

4

1 回答 1

0

再见,

正如这篇伟大的帖子所说

第一个解决方案

  • 你在运行 raspbian 拉伸还是 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 行,在
import iothub_client 文件“/usr/local/lib/python3.5/dist-packages/iothub_client/init .py ”,第 1 行,
来自.iothub_client 导入 *
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 已经报告了类似 curl out of memory 问题的解决方案
    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 包

于 2018-09-08T07:52:34.210 回答