I have the following setup: Pyro nameserver running under python2.7, Pyro daemon running under python2.7, and (ideally) a Pyro client running python3.3.
If I connect to the server using a client running under python2.7 everything works fine. When using python3.3 for the client I can create the proxy connection just fine, but I get:
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'
when trying to use any remote methods. The pyro docs seem to imply that I should be able to interconnect python2.7 instances with python3.3, is this not the case?
Both the 2.7 and 3.3 instance of python are using Pyro4 version 4.16
EDIT: Here's some actual code that's not working for me:
(With a python2 ns started)
In a 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()
and in a python3.3 virtualenv:
import Pyro4
rtest = Pyro4.Proxy("PYRONAME:foo")
print(rtest.foo())
I get that exact exception I put above.