我正在尝试使用IPython.parallel对SSH的支持,以允许我的Linux客户端从安装了EPD64的OS X服务器运行远程ipengine
。但是,这会失败,因为它尝试使用我的本地计算机找出在远程主机上运行的正确命令,该主机的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,
}
答案 0 :(得分: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']