我正在尝试通过我编写的几个 C 函数来扩展 Python 解释器。通过阅读文档,要公开这些功能,用户必须导入包含这些功能的模块。
是否可以通过 C API 加载预加载或预导入模块,以便用户不必键入 import <mymodule>
?或者更好,from <mymodule> import <function>
?
编辑: 我可以在 Py_Initialize() 之后执行 PyRun_SimpleString("from mymodule import myfunction"); - 我只是想知道是否有另一种方法可以做到这一点......?
编辑 2: 换句话说,我有一个用 C 语言编写的应用程序,它嵌入了一个 Python 解释器。该应用程序提供了一些我想向用户公开的功能,以便他们可以为该应用程序编写简单的 Python 脚本。我只想消除写作 from mymodule import myfunction1, myfunction2
的需要因为,由于它是非常专业的应用程序,脚本无论如何都无法在没有该应用程序的情况下运行,因此要求 import ...
是没有意义的。一直。
最佳答案
即使您用 Python 实现了一个模块,用户也必须导入
它。这就是 Python 的工作方式,它实际上是一件好事 - 它是 Python 的一大优点 - namespace /模块系统健壮、易于使用且易于理解。
仅对于学术练习,您当然可以通过创建自定义解释器将新功能添加到 Python 本身。您甚至可以通过这种方式创建新的关键字。但出于任何实际目的,不建议这样做。
关于python - 扩展 Python : pre-load my C module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1963453/