{"id":24642,"library":"spyne","title":"Spyne","description":"A transport and architecture agnostic RPC library focusing on exposing public services with a well-defined API. Current version 2.14.0. Release cadence is irregular; last major release was 2020, with minor patches since.","status":"maintenance","version":"2.14.0","language":"python","source_language":"en","source_url":"https://github.com/arskom/spyne","tags":["rpc","soap","wsgi","service"],"install":[{"cmd":"pip install spyne","lang":"bash","label":"pip install spyne"}],"dependencies":[],"imports":[{"note":"In older versions, Application was in spyne.application; now it's exposed at the top level.","wrong":"from spyne.application import Application","symbol":"Application","correct":"from spyne import Application"},{"note":"rpc decorator is exported from spyne directly; submodule path changed.","wrong":"from spyne.decorator import rpc","symbol":"rpc","correct":"from spyne import rpc"},{"note":"ServiceBase is now re-exported from the top-level spyne package.","wrong":"from spyne.service import ServiceBase","symbol":"ServiceBase","correct":"from spyne import ServiceBase"}],"quickstart":{"code":"from spyne import Application, rpc, ServiceBase, Iterable, Integer, Unicode\nfrom spyne.protocol.soap import Soap11\nfrom spyne.server.wsgi import WsgiApplication\n\nclass HelloWorldService(ServiceBase):\n    @rpc(Unicode, _returns=Unicode)\n    def say_hello(ctx, name):\n        return 'Hello, %s!' % name\n\napplication = Application([HelloWorldService], 'spyne.examples.hello',\n                          in_protocol=Soap11(), out_protocol=Soap11())\n\nif __name__ == '__main__':\n    from wsgiref.simple_server import make_server\n    server = make_server('0.0.0.0', 8000, WsgiApplication(application))\n    server.serve_forever()","lang":"python","description":"Create a minimal SOAP service with Spyne 2.14."},"warnings":[{"fix":"Upgrade Python environment to 3.5 or higher.","message":"Spyne 2.13 dropped support for Python 2.7 and Python 3.4. Use Python 3.5+.","severity":"breaking","affected_versions":">=2.13.0"},{"fix":"Replace 'from spyne.application import Application' with 'from spyne import Application'.","message":"The 'spyne.application' module is deprecated; import directly from 'spyne'.","severity":"deprecated","affected_versions":">=2.10"},{"fix":"Import from 'spyne.server.wsgi' instead of 'spyne.server.wsgi' (it's the same path but verify spelling: WsgiApplication).","message":"WsgiApplication is deprecated in favor of WsgiApplication (note: same name) but the import location changed; use 'from spyne.server.wsgi import WsgiApplication'.","severity":"gotcha","affected_versions":">=2.14"},{"fix":"Use synchronous WSGI/HTTP servers; consider a different library for async RPC.","message":"Spyne does not officially support async/await. Using asyncio with Spyne may cause unpredictable behavior.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Install spyne>=2.10: 'pip install spyne>=2.10' or import from 'spyne.application' for older versions.","cause":"Spyne version older than 2.10 where Application was not re-exported.","error":"ImportError: cannot import name 'Application' from 'spyne'"},{"fix":"Upgrade to spyne>=2.10: 'pip install --upgrade spyne'.","cause":"Using a very old version (pre-2.10) or a broken installation.","error":"AttributeError: module 'spyne' has no attribute 'rpc'"},{"fix":"Upgrade to spyne>=2.12 or use 'returns' (without underscore) for older versions.","cause":"The '_returns' parameter for @rpc was added in Spyne 2.12. Using an older version.","error":"TypeError: __init__() got an unexpected keyword argument '_returns'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}