def cmd(c): import subprocess proc = subprocess.Popen(c, stdout=subprocess.PIPE, shell=True) (ret, err) = proc.communicate() if (err is not None) and err!="": raise Exception(err) return ret def run_cpython(script_name, args = []): script = get_context().scriptManager.library.resolveFile(script_name) c = "python " + script + " " for arg in args: c = c + str(arg) + " " return cmd(c) def call_cpython(script_name, method_name, args = []): launcher = get_context().scriptManager.library.resolveFile("launcher") script = os.path.abspath(get_context().scriptManager.library.resolveFile(script_name)) jsonargs = json.dumps(args) a = [] a.append(script) a.append(method_name) a.append('"' + jsonargs + '"') ret = run_cpython(launcher, a) ret = ret[0:-2] jsonret = ret[ret.rfind('\n')+1:] return json.loads(jsonret) def call_cpython(script_name, method_name, args = []): script = os.path.abspath(get_context().scriptManager.library.resolveFile(script_name)) jsonargs = json.dumps(args) launcher = "" launcher = launcher + "script = '" +script + "'\n" launcher = launcher + "function = '" +method_name + "'\n" launcher = launcher + "jsonargs = '" +jsonargs + "'\n" launcher = launcher + """import sys import json import os args =json.loads(jsonargs) i = script.rfind(os.sep) module = script[i+1:-3] sys.path.insert(1,script[:i+1]) exec 'from ' + module + ' import ' + function + ' as function' print json.dumps(function(*args)) """ launcher = launcher.replace('\n', ';') launcher = launcher.replace('\\', '\\\\') c = 'python -c "' + launcher + '"' ret = cmd(c) ret = ret[0:-2] jsonret = ret[ret.rfind('\n')+1:] return json.loads(jsonret) print cmd("dir") print "--------" print run_cpython("np", ["asd", 2]) print "--------" ret = call_cpython("np","add", [[1,2,3,4,5], [3,3,3,3,3]]) print ret