python - 使用 Pyro-nsd 时找不到 Pyro 名称服务器

标签 python python-2.7 raspberry-pi pyro

我在运行 Wheezy 的树莓派上使用 Pyro4 和 Python 2.7

当我启动 Pyro 名称服务器时

pyro4-ns &

python -m Pyro4.naming &

我的代码按预期工作,没有任何错误。但是,当我使用以下命令启动 Pyro 名称服务器守护程序时

/etc/init.d/pyro-nsd start

当我将 lamp_daemon.py 作为后台进程启动时

/home/pi/Wakeup-Lamp/lamp_daemon.py &

我得到以下错误

File "/home/pi/Wakeup-Lamp/lamp_daemon.py", line 27, in
nameServer = Pyro4.locateNS()
File "/usr/local/lib/python2.7/dist-packages/Pyro4/naming.py", line 358, in locateNS
raise e
Pyro4.errors.NamingError: Failed to locate the nameserver

lamp_daemon.py代码为

#!/usr/bin/python

from current_lamp_state import CurrentLampState
from lamp_state import LampState
from pwm import Pwm
import Pyro4
import Pyro.core
import Pyro.naming

class LampSwitch(Pyro.core.ObjBase):
  __currentLampState = CurrentLampState()
  __pwm = Pwm()

  def get_lamp_state(self):
    return self.__currentLampState.get()

  def set_lamp_state(self, new_lamp_state):
    self.__currentLampState.set(new_lamp_state)
    self.__pwm.update()

lampSwitch = LampSwitch()
daemon = Pyro4.Daemon()
nameServer = Pyro4.locateNS()
uri = daemon.register(lampSwitch)
nameServer.register("lamp.daemon", uri)
daemon.requestLoop()

我用谷歌搜索了很多,但似乎无法解决问题。有没有人知道我做错了什么?

最佳答案

如果服务器上的 pyro 版本与客户端不同,则无法找到名称服务器,这是检查 Pyro 版本的方法:

python -c "import Pyro4.constants as c; print(c.PROTOCOL_VERSION)"

如果不一样,请卸载pyro模块,重新安装。

当我按照上述步骤操作时,我遇到了类似的问题,该问题已得到解决。

关于python - 使用 Pyro-nsd 时找不到 Pyro 名称服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26496474/

相关文章:

python - 使用 TCP/socket 将字符串列表从 Python 发送到 C#

python - 尝试按对象将行附加到组中的每个组时出现奇怪的行为

python - 如何根据用户输入更新和保存Python脚本(仅变量,无逻辑)?

mysql - i2c安装后Raspberry Pi与MySQL的问题

amazon-web-services - 是否可以制作混合K8S集群AWS/Raspberry PI

python 3 : install in virtualenv fails

python - 如何使 sklearn.TfidfVectorizer 标记特殊短语?

python - Jupyter 笔记本中的自动完成功能不起作用

python - 使用 virtualenv 和 pip 为 Python 2.7 安装 ipdb 时出错

python GPIO 引脚不会清理