我有以下设置:在python2.7下运行的Pyro nameserver,在python2.7下运行的Pyro守护进程,以及(理想情况下)运行python3.3的Pyro客户端。Pyro4将python2连接到python3
如果我使用在python2.7下运行的客户端连接到服务器,一切正常。当使用python3.3客户端,我可以创建代理连接就好了,但我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/project_path/lib/python3.3/site-packages/Pyro4/core.py", line 149,
return self.__send(self.__name, args, kwargs)
File "/project_path/lib/python3.3/site-packages/Pyro4/core.py", line 271,
self.__pyroCreateConnection()
File "/project_path/lib/python3.3/site-packages/Pyro4/core.py", line 322,
uri=resolve(self._pyroUri)
File "/project_path/lib/python3.3/site-packages/Pyro4/naming.py", line 336
nameserver=locateNS(uri.host, uri.port)
File "/project_path/lib/python3.3/site-packages/Pyro4/naming.py", line 274
proxy.ping()
File "/project_path/lib/python3.3/site-packages/Pyro4/core.py", line 149,
return self.__send(self.__name, args, kwargs)
File "/project_path/lib/python3.3/site-packages/Pyro4/core.py", line 290,
data=self._pyroSerializer.deserialize(data, compressed=flags & MessageFactory.FLAGS_COMPRESSED)
File "/project_path/lib/python3.3/site-packages/Pyro4/util.py", line 146,
return self.pickle.loads(data)
ImportError: No module named 'exceptions'
试图用任何远程方法时。 pyro文档似乎暗示我应该能够将python2.7实例与python3.3互连,是不是这种情况?
无论是2.7和Python 3.3例如使用Pyro4版本4.16
编辑:这里的,这不是为我工作的一些实际代码:
(随着python2纳秒开始)
在python2.7的virtualenv:
import Pyro4
class TestProxy(object):
def foo(self):
return "bar"
if __name__ == "__main__":
print "* Starting test proxy"
daemon=Pyro4.Daemon()
tproxy_uri=daemon.register(TestProxy())
ns=Pyro4.locateNS()
ns.register("foo",tproxy_uri)
print "* Proxy started"
daemon.requestLoop()
,并在python3.3的virtualenv:
import Pyro4
rtest = Pyro4.Proxy("PYRONAME:foo")
print(rtest.foo())
我得到了上面所说的确切例外。
最后我说拧紧,移植项目回python2.7。但是,如果有人知道这个问题,我仍然很好奇这个问题的答案。 –