从python中执行复杂的python脚本

时间:2017-01-19 22:52:48

标签: python

我有一个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包)没有被识别?任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

import subprocess

subprocess.call(["python","C:/path/to/my/script.py"])

我建议不要这样做,只需使用import

这也是假设您的PYTHONPATH已在您的环境变量中设置。