diff --git a/IPython/parallel/apps/ipclusterapp.py b/IPython/parallel/apps/ipclusterapp.py index 5a5f856da0d..44d4ca45b7e 100755 --- a/IPython/parallel/apps/ipclusterapp.py +++ b/IPython/parallel/apps/ipclusterapp.py @@ -275,19 +275,22 @@ def initialize(self, argv=None): self.init_launchers() def init_launchers(self): - self.engine_launcher = self.build_launcher(self.engine_launcher_class) + self.engine_launcher = self.build_launcher(self.engine_launcher_class, 'EngineSet') self.engine_launcher.on_stop(lambda r: self.loop.stop()) def init_signal(self): # Setup signals signal.signal(signal.SIGINT, self.sigint_handler) - def build_launcher(self, clsname): + def build_launcher(self, clsname, kind=None): """import and instantiate a Launcher based on importstring""" if '.' not in clsname: # not a module, presume it's the raw name in apps.launcher + if kind and kind not in clsname: + # doesn't match necessary full class name, assume it's + # just 'PBS' or 'MPIExec' prefix: + clsname = clsname + kind + 'Launcher' clsname = 'IPython.parallel.apps.launcher.'+clsname - # print repr(clsname) try: klass = import_item(clsname) except (ImportError, KeyError): @@ -422,8 +425,8 @@ def _classes_default(self,): aliases = Dict(start_aliases) def init_launchers(self): - self.controller_launcher = self.build_launcher(self.controller_launcher_class) - self.engine_launcher = self.build_launcher(self.engine_launcher_class) + self.controller_launcher = self.build_launcher(self.controller_launcher_class, 'Controller') + self.engine_launcher = self.build_launcher(self.engine_launcher_class, 'EngineSet') self.controller_launcher.on_stop(self.stop_launchers) def start_controller(self):