While trying to understand what problem does OSGI solve in the java ecosystem ,i find myself wondering if there is such a problem in python as well ? if yes how it is solved , if no why ?
The purpose of OSGi is to write (reusable) active modules that can discover each other at runtime so that these modules can decide to collaborate. The primary mechanism is the service registry that acts as a simple broker for objects. 
A similar mechanism exists in JavaScript with the exports global variable. Unlike the JavaScript module systems, however, the OSGi service registry is dynamic.
I am not aware of anything like this in Python. I think the need for something like OSGi arises in larger programs made with larger or diversified teams. An area that Java with its static typing is more suitable for. Especially since Java has a very strong focus on interface based design; in the eco system of Java/OSGi you find many specifications and actually multiple implementations. In this world, a broker that matches implementations to specifications is important.
I think Python, and for that matter Ruby, and other languages would greatly benefit from a service broker like OSGi.
is there a requirement in python similar to what osgi tries to solve in java ?