如何使用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,它会在远程客户端或本地执行吗?我可以控制在哪里吗?
答案 0 :(得分:0)
解决此问题的一种方法是使用execute
传入的函数调用eval
或globals
,如下所示:
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
执行此操作,因为它不会globals
或locals
。