我在运行 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/