我正在尝试使用 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,
}