skillfed

Pyro5

Remote object communication library, fifth major version

pyro5 v5.17 374.1K downloads/30d#7,149 on PyPI387
Permissive license MIT Active released

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 pyro5

uv

uv add pyro5

poetry

poetry add pyro5

Installing 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

Development Status :: 5 - Production/StableIntended Audience :: DevelopersNatural Language :: DutchNatural Language :: EnglishOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Topic :: Software Development :: Object BrokeringTopic :: System :: Distributed ComputingTopic :: System :: Networking

Tags

remote method calls pythondistributed object communicationRPC library pythonnetwork object invocationinter-process communicationremote python objectsdistributed computing python
distributed-systemsrpcnetworking

More Distributed Computing packages