Pyro5
Remote object communication library, fifth major version
What it is and what it does
Pyro5 is a pure-Python library that lets you build distributed applications where objects communicate over a network using normal Python method calls. Instead of writing custom network code, you expose Python objects and call methods on them remotely as if they were local—Pyro handles locating the object, serializing arguments, transmitting the call, and returning results. It supports multiple serializers (serpent, json, marshal, msgpack), secure SSL/TLS connections, IPv4/IPv6 and Unix domain sockets, and includes a name server for tracking object locations.
The library is designed for ease of use while offering advanced features like automatic reconnection, remote iterators, batched invocations, one-way calls, and correlation IDs for tracing. It has a stable foundation built on over 20 years of Pyro history and runs on CPython 3 and PyPy 3 across different platforms and architectures. The project is currently in low maintenance mode, meaning new features are unlikely but reported bugs are addressed.
Use it for:
- Build a distributed system where computational tasks run on remote servers and are invoked from a central coordinator using normal Python method syntax.
- Create a multi-machine application where objects on different hosts need to communicate transparently without explicit socket or RPC boilerplate.
- Implement inter-process communication between Python processes on the same machine or across a network using a name server for dynamic object discovery.
- Develop services that expose Python objects and clients invoke methods remotely with automatic serialization and error propagation.
- Stream large datasets on-demand from a remote object using remote iterators instead of loading entire collections into memory upfront.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Pyro5 enables remote method calls on Python objects across a network, letting you invoke methods on objects running on other machines as if they were local.
Yes, if you need straightforward remote method invocation in a distributed Python system. Pyro5 is mature, permissively licensed, has low install friction, and carries no known vulnerabilities. The trade-off is its low-maintenance status: expect bug fixes but not active feature development. It is well-suited for applications that do not require cutting-edge async patterns or frequent library updates.
Install
pyro5 on PyPI
pip
pip install pyro5uv
uv add pyro5poetry
poetry add pyro5Installing Pyro5
Before you install
Installation is straightforward with a single pure-Python wheel and minimal dependencies. The project is in low maintenance mode with only bug fixes expected, though it remains actively monitored and has a stable release history spanning over 20 years of Pyro development.
License in practice
MIT license permits commercial and private use with minimal restrictions; you may use, modify, and distribute Pyro5 freely as long as you include the license notice.
Quickstart
pip install pyro5
import Pyro5.api
@Pyro5.api.expose
class MyObject:
def greet(self, name):
return f"Hello {name}"
uri = Pyro5.api.locate_ns().register("my.object", Pyro5.api.Daemon().register(MyObject()))
remote_obj = Pyro5.api.Proxy(uri)
print(remote_obj.greet("World"))
Requires Python 3.7 or later; both server and client must be reachable over the network or local sockets.
Verify before relying
- Whether the project's 'super low maintenance mode' status means critical bugs may see delayed responses.
- Performance characteristics and scalability limits for high-throughput distributed systems.
- Compatibility guarantees with modern async/await patterns and contemporary Python frameworks.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.7) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — serpent |
| Maintenance | actively maintained — 56 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 374,075/month — #7,149 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pyro5-5.17-py3-none-any.whl
Keywords: distributed objects, RPC, remote method call, IPC
Tags
More Distributed Computing packages
gRPC Python is an HTTP/2-based RPC framework…
permissive · top 100 on PyPI
execnetexecnet lets you spawn and communicate with…
permissive · top 1,000 on PyPI
cloudpickleCloudpickle extends Python's standard pickle…
permissive · top 1,000 on PyPI
smart-openProvides a unified, open()-compatible Python…
permissive · top 1,000 on PyPI
portalockerPortalocker provides cross-platform file…
permissive · top 1,000 on PyPI
rayRay is a distributed computing framework that…
permissive · top 1,000 on PyPI
Pyro4Pyro4 enables Python objects to communicate…
permissive · top 15,000 on PyPI
py4jPy4J enables Python programs to dynamically…
permissive · top 1,000 on PyPI
pyro-pplPyro is a deep probabilistic programming…
permissive · top 5,000 on PyPI
pyro-apiProvides a generic dispatch API for…
permissive · top 5,000 on PyPI
conjure-python-clientA lightweight HTTP client library built on…
permissive · top 15,000 on PyPI
tlslite-ngPure Python implementation of SSL/TLS protocols…
copyleft · top 15,000 on PyPI
wakeonlanSends wake-on-LAN magic packets to power on…
permissive · top 15,000 on PyPI
connectrpcConnect is a runtime library for building and…
permissive · top 15,000 on PyPI