确定Python代码是否在嵌入式解释器中运行

时间:2015-12-21 16:17:47

标签: python c++ global-variables

我正在编写一个嵌入Python解释器的c ++应用程序。如果从嵌入式解释器运行代码,我想安装自定义sys.excepthook,但是当从控制台运行代码时,我不想安装自定义globals

通过Python C API文档,我遇到PyEval_GetGlobals(),我认为我可以使用它来获取对PyObject* PyEval_GetGlobals()字典的引用,并在初始化嵌入式解释器时设置全局变量

  

NULL   返回值:借用参考。返回全球字典   当前执行帧中的变量,如果没有帧,则为NULL   目前正在执行。

不幸的是,此函数返回defmodule Plug.Router do defmacro get(route, body) do quote do defp do_match("GET", unquote(route), var!(conn)) do unquote(body[:do]) end end end end defmodule MyRouter do import Plug.Router def match(type, route) do do_match(type, route, :dummy_connection) end get "/hello", do: {conn, "Hi!"} get "/goodbye", do: {conn, "Bye!"} MyRouter.match("GET", "/hello") |> IO.inspect MyRouter.match("GET", "/goodbye") |> IO.inspect end ,因为没有执行帧。有没有其他方法可以从C API插入全局变量?或者更好的方法来确定如何从Python端执行代码?

0 个答案:

没有答案