【问题标题】:ImportError: cannot import name PubnubImportError:无法导入名称 Pubnub
【发布时间】:2023-03-31 15:49:02
【问题描述】:

我正在尝试使用 Pubnub 平台控制 Raspberry Pi 上的 LED。 我刚开始,我尝试了这个教程:

https://www.pubnub.com/blog/2015-05-27-internet-of-things-101-getting-started-w-raspberry-pi/

但是,当我想执行一个导入 Pubnub 库的 Python 文件时:

from pubnub import Pubnub

我收到此错误消息:

ImportError: cannot import name Pubnub

我完全按照教程中的说明做了所有事情。我什至从他们的 Github 存储库中复制了 .py 类。

这是我的课:

import RPi.GPIO as GPIO
import time
import sys
from pubnub import Pubnub

GPIO.setmode (GPIO.BCM)

LED_PIN = 17

GPIO.setup(LED_PIN,GPIO.OUT)

pubnub = Pubnub(publish_key='xxxx', subscribe_key='xxxx')

channel = 'disco'

def _callback(m, channel):
        print(m)
        if m['led'] == 1:
                for i in range(6):
                    GPIO.output(LED_PIN,True)
                    time.sleep(0.5)
                    GPIO.output(LED_PIN,False)
                    time.sleep(0.5)
                    print('blink')

def _error(m):
        print(m)

pubnub.subscribe(channels=channel, callback=_callback, error=_error)

【问题讨论】:

  • pubnub.py文件是和你正在执行的文件在同一个目录下,还是在pythonpath上?
  • 尝试运行:help('modules') 并查看列出了哪些模块。寻找你的 Pubnub
  • 我这样做是为了设置 python 和 pubnub:安装 Python:pi@raspberrypi ~$ sudo apt-get install python-dev 安装 pip:pi@raspberrypi ~$ sudo apt-get install python-pip install PubNub:pi@raspberrypi ~$ sudo pip install pubnub
  • 当我执行 help('modules') 时会列出 pubnub 模块。
  • @Alan: pubnub.py 文件位于:/usr/local/lib/python2.7/dist-packages/pubnub.py 我控制 LED 的 python 类在我的主目录中.

标签: python raspberry-pi raspberry-pi2 pubnub iot


【解决方案1】:

如果您从 2016 年 11 月上旬开始遇到这种情况; pubnub API 在 4.0 版本中发生了变化。

from pubnub import Pubnub

不起作用。现在是(据我所知):

from pubnub.pubnub import PubNub

【讨论】:

  • 谢谢你成功了。但是,API 发生了很大变化,以至于旧的 Raspberry Pi 教程完全无法使用。有没有人有 PubNub python new API 的工作示例?
【解决方案2】:

尝试:

pip install pubnub

我做到了,而且效果很好。不需要 github 任何东西。 pip 适用于 Linux 和 Windows。

【讨论】:

  • 我在设置项目时已经这样做了。请参阅上面的评论。我需要再次执行它吗?
  • 当我再次执行命令时,它说要求已经满足了。
  • 你可以“导入 pubnub”吗?请发布目录(pubnub)。
  • 我建议删除所有 pubnub 数据并再次执行“pip install pubnub”
  • pubnub 确实:"import requests from requests.adapters import HTTPAdapter" 也许它被删除了。执行“pip install requests”
【解决方案3】:

我在我的 Raspberry Pi 3 上遇到了同样的问题。它最终变成了一个非常愚蠢的问题!我有一个名为 pubnub.py 的文件,这就是为什么当我运行位于“桌面”文件夹中的脚本时它不起作用的原因。但是,在我将它带到它的父目录“pi”之后,它导入 pubnub 没有问题!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 2014-10-10
    • 2014-09-20
    • 2014-08-28
    • 2014-06-10
    • 2016-05-16
    相关资源
    最近更新 更多