Running on alternative Python implementations¶
Pyro is written in 100% pure Python which -theoretically- enables it to be used with any compatible Python implementation. There are a few gotchas however.
Note
If possible please use the most recent version available of the Python implementation.
Jython¶
- The multiplexing server type (select/poll-based server) is not reliable on Jython. You can only use the threadpool server type.
- You cannot use the
otherparameter to the requestloop of a Threadpool server. The workaround is to spawn a separate thread for each socket that you need to listen to. (The name server does this for the broadcast server, if it detects that it is running on Jython)
IronPython¶
- Pyro requires the
zlibmodule, which is not included in older IronPython versions. IronPython 2.7 includes it by default. If you need to install it manually, get it from the developer. - IronPython cannot properly serialize exception objects, which could lead to problems when dealing with Pyro’s enhanced tracebacks. For now, Pyro contains a workaround for this IronPython bug.
Pypy¶
I haven’t used Pypy much let alone with Pyro, but it seems that at least the recent Mac OS X and Linux builds of Pypy work fine with Pyro. There are a lot of problems on Windows however which I can’t explain (most likely due to the fact that the windows build of Pypy is quite old and misses a lot of bug fixes). So don’t use Pypy on Windows with Pyro.
There is one problem with running the unit tests on Pypy: one of the tests freezes and Pypy cannot complete the test suite. I hope to fix this in the near future (or maybe it’s a bug in Pypy?)