NameError:未定义全局名称“ Pubnub”

时间:2019-01-05 21:57:05

标签: python-3.x pubnub

Im使用cf push在Bluemix上部署应用程序服务器,我收到错误“ NameError:未定义全局名称'Pubnub'”,但实际上遇到的第一个错误是“ ERR ImportError:无法导入名称Pubnub”,然后我在其他线程中找到了一个解决方案,在这些线程中,他们建议将语法更改为“从pubnub.pubnub import PubNub”,因为我已安装了PubNub v4。任何想法如何解决这个问题。谢谢。下面是我的代码出现错误的地方

def init():
    #Pubnub Initialization
    global pubnub 
    pubnub = Pubnub(publish_key=PUB_KEY,subscribe_key=SUB_KEY)
    pubnub.subscribe(channels='kitchenDevice-resp', callback=callback, error=callback, reconnect=reconnect, disconnect=disconnect)
    pubnub.subscribe(channels='kitchenApp-req', callback=appcallback, error=appcallback, reconnect=reconnect, disconnect=disconnect)

2 个答案:

答案 0 :(得分:0)

您似乎正在尝试不推荐使用/已终止使用,尽管它应该可以工作。

请确保您使用PubNub Python SDK v4,因为不再支持v3,尽管它仍然可以使用。

如果您提供了更多的代码(包括导入),这将有所帮助,但是我强烈建议您再次尝试使用v4 SDK,如有必要,您可以联系PubNub支持。

答案 1 :(得分:0)

Pip是Python软件包管理器。您可以使用它在计算机上安装软件包和SDK,以运行更好的Python应用。

要在 Mac OS 上安装,请在终端中使用以下命令:

easy_install pip

Installing Pip on Linux

Installing Pip on Windows

使用pip安装PubNub Python v4 SDK(最新版本)。终端命令:

pip install 'pubnub>=4.1.2'

以下是连接到PubNub以及发布和订阅真棒频道的代码。确保您将自己的Free PubNub API keys放入代码中:

from pubnub.callbacks import SubscribeCallback
from pubnub.enums import PNStatusCategory
from pubnub.pnconfiguration import PNConfiguration
from pubnub.pubnub import PubNub

pubnub = PubNub(pnconfig)

def my_publish_callback(envelope, status):
    # Check whether request successfully completed or not
    if not status.is_error():
        print 'publish success'

class MySubscribeCallback(SubscribeCallback):
    def presence(self, pubnub, presence):
        pass
    def status(self, pubnub, status):
        pass
    def message(self, pubnub, message):
        print message.message

pubnub.add_listener(MySubscribeCallback())
pubnub.subscribe().channels("awesomeChannel").execute()

## publish a message
pubnub.publish().channel("awesomeChannel").message("publish from device").pn_async(my_publish_callback)