我有一个python脚本,它有一个接收包含另一个python脚本的字符串的方法。我想执行该脚本,调用其中的函数,然后在我的主脚本中使用该函数的结果。它目前看起来像这样:
def executePythonScript(self, script, param):
print 'Executing script'
try:
code = compile(script, '<string>', 'exec')
exec code
response = process(param)
except Exception as ex:
print ex
print 'Response: ' + response
return response
&#34;流程&#34;假定函数存在于编译和执行运行时的脚本中。
此解决方案适用于非常简单的脚本,例如:
def process():
return "Hello"
...但我没有运气来获得更复杂的脚本来执行。例如,如果我的脚本使用json包,我会得到:
全球名称&#39; json&#39;未定义
此外,如果我的流程函数引用同一个脚本中的另一个函数,我也会在那里收到错误:
def process():
return generateResponse()
def generateResponse():
return "Hello"
...给我一个错误:
全球名称&#39; generateResponse&#39;未定义
这是命名空间的问题吗?为什么json(这是一个标准的python包)没有被识别?任何建议将不胜感激!
答案 0 :(得分:1)
import subprocess
subprocess.call(["python","C:/path/to/my/script.py"])
我建议不要这样做,只需使用import
。
这也是假设您的PYTHONPATH已在您的环境变量中设置。