0

我正在使用source_python()函数通过 R Shiny 的用户界面运行 Python 脚本。代码运行正常,我成功了。但我想运行一个名为的函数function2(),它位于Task3.py. 我可以这样做吗?如果是,那么我该怎么做?我只想执行function2(). 我不想function1()function3()。我通过使用谷歌搜索找到的以下行和语法来做到这一点。function2()仅通过以下链接,我无法成功运行。我遵循的链接是:

https://rstudio.github.io/reticulate/articles/calling_python.html

服务器.R:

library(reticulate)
observeEvent(input$action,{
    py_run_file("applications/Task3.py")
    function2()
  })

任务3.py:

def main(argv):
   function1()
   ....
   function2()
   ....
   function3()
   ....
if __name__ == "__main__":
    try:
        k=sys.exit(main(sys.argv))
    except (ValueError, IOError) as e:
        sys.exit(e)
4

1 回答 1

1

要从 python 模块调用单个函数,您需要将模块作为对象导入并从中运行函数,而不是将模块作为脚本执行。

您链接的教程从如何做到这一点开始。而不是py_run_file,你会想要使用import

library(reticulate)
observeEvent(input$action,{
    task3 <- import("Task3")
    task3$function2()
})

您可能必须切换到该applications目录或将其添加到您的 PYTHONPATH 才能正常导入。

于 2018-07-22T13:27:45.813 回答