def install_package(self, path, recursive=False):
        # type: (str, bool) -> tuple
        """
        Installs all the modules found in the given package (directory).
        It is a utility method working like
        :meth:`~pelix.framework.BundleContext.install_visiting`, with a visitor
        accepting every module found.

        :param path: Path of the package (folder)
        :param recursive: If True, installs the modules found in sub-directories
        :return: A 2-tuple, with the list of installed bundles
                 (:class:`~pelix.framework.Bundle`) and the list of the names
                 of the modules which import failed.
        :raise ValueError: The given path is invalid
        """
        return self.__framework.install_package(path, recursive)