1

我正在尝试使用 IPython.parallel 对 SSH 的支持来允许我的 Linux 客户端ipengine从安装了 EPD64 的 OS X 服务器运行远程 s。但是,这失败了,因为它试图使用我的本地计算机来找出在远程主机上运行的正确命令,该远程主机的ipengineapp包位于不同的位置。如何修改ipcluster_config.py以识别差异?

具体来说,当我ipcluster start --log-level=DEBUG在远程主机上运行时,我得到控制台输出,告诉我其中包含如下行:

[IPClusterStart] Starting LocalEngineLauncher: ['/Library/Frameworks/EPD64.framework/Versions/7.3/bin/python', '-c', 'from IPython.parallel.apps.ipengineapp import launch_new_instance; launch_new_instance()', '--profile-dir', u'/Users/username/.ipython/profile_default', '--cluster-id', u'', '--log-to-file', '--log-level=20']

另一方面,当从我的本地机器运行时ipcluster start --log-level=DEBUG,我得到以下行,这将适用于 Linux 主机:

[IPClusterStart] Starting SSHEngineLauncher: ['ssh', '-tt', u'hostname', '/usr/bin/python', u'/usr/lib/python2.7/site-packages/IPython/parallel/apps/ipengineapp.py', '--profile-dir', u'/home/username/.ipython/profile_ssh', '--log-to-file', '--log-level=20']

ipcluster_config.py的这个例子是:

c = get_config()
c.IPClusterEngines.engine_launcher_class = 'SSHEngineSetLauncher'
c.IPClusterStart.controller_launcher_class = 'SSHControllerLauncher'

c.SSHEngineSetLauncher.engines = {
    'hostname1': 12,
    'hostname2': 12,
}
4

1 回答 1

1

我认为这在 0.14 中有所改进,但您正在寻找的配置值是SSHEngineSetLauncher.engine_cmd. 在 ipcluster_config.py 中编辑它,如下所示:

c.SSHEngineSetLauncher.engine_cmd = ['/path/to/your/python', '-c', 'from IPython.parallel.apps.ipengineapp import launch_new_instance; launch_new_instance()']

或者,有时即使是最简单的事情也能奏效,只要您的 PATH 是在一个简单的 ssh 会话中配置的:

c.SSHEngineSetLauncher.engine_cmd = ['ipengine']
于 2013-02-12T04:21:40.953 回答