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)
答案 0 :(得分:0)
您似乎正在尝试不推荐使用/已终止使用,尽管它应该可以工作。
请确保您使用PubNub Python SDK v4,因为不再支持v3,尽管它仍然可以使用。
如果您提供了更多的代码(包括导入),这将有所帮助,但是我强烈建议您再次尝试使用v4 SDK,如有必要,您可以联系PubNub支持。
答案 1 :(得分:0)
Pip是Python软件包管理器。您可以使用它在计算机上安装软件包和SDK,以运行更好的Python应用。
要在 Mac OS 上安装,请在终端中使用以下命令:
easy_install pip
使用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)