使用python pushy来评估子函数

时间:2014-04-12 05:19:08

标签: python remote-server

如何使用pushy来评估调用另一个函数的函数?我收到的错误是由于远程客户端上不存在子功能。

实施例

模块test.py:

import os
def func1():
    func2()
def func2():
    print os.uname()

模块main.py

import pushy
rc = pushy.connect('ssh:remote_network_address')
proxy_func = rc.compile(test.func1)
proxy_func()

我会收到以下错误:

pushy.protocol.proxy.ExceptionProxy: global name 'func2' is not defined

然而,如果' print os.uname()'位于func1中,并且没有调用func2,代码按预期工作。基本上,我怎么能告诉foo2,它会在远程客户端或本地执行吗?我可以控制在哪里吗?

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是使用execute传入的函数调用evalglobals,如下所示:

import os
def func1():
    func2()

def func2():
    print os.uname()

import pushy
rc = pushy.connect('local:')
# runs:
rc.execute("func1()", globals={'func1':func1})
# runs:
rc.eval("func1()", globals={'func1':func1})

# close 
rc.close()

我得到的结果如下:

  

(' Linux',' piane',' 3.8.0-38-generic','#56~minision1-Ubuntu SMP Thu Mar 13 16:22:48   UTC 2014',' x86_64')

我不清楚如何通过compile执行此操作,因为它不会globalslocals