Python/C“defs”文件是什么?

2024-09-28 19:25:59 发布

您现在位置:Python中文网/ 问答频道 /正文

在nautilus python绑定中,有一个文件“nautilus.defs”。它包含了像

(define-interface MenuProvider
  (in-module "Nautilus")
  (c-name "NautilusMenuProvider")
  (gtype-id "NAUTILUS_TYPE_MENU_PROVIDER")
)

或者

^{pr2}$

现在我可以看到这些方法的作用了(例如,最后一个意味着我可以在“FileInfo”对象上调用“get_mime_type”方法)。但我想知道:这个文件到底是什么(例如,我要在网上搜索什么才能找到更多信息)?这是Python/C绑定中常见的东西吗?格式是什么?文件记录在哪里?什么程序实际处理它?在

(到目前为止,我已经收集到它得到了transformed into a C source file,在我看来它有点像lisp。)


Tags: 文件方法nameiniddefsinterfacemodule
2条回答

要为C代码创建Python绑定,只需使用Python / C API。然而,API可能有些重复和冗余,因此可以使用各种形式的自动化来创建它们。例如,您可能听说过swig。您看到的类似LISP的(Scheme)代码只是PyGTK-Codegen的配置文件,这是一个类似的自动化程序,用于创建到Python的绑定。在

回答你的“哪个程序实际处理它?”问题:

src目录中的Makefile.in开始,将.defs文件转换为C的命令是PYGTK_CODEGEN。要了解PYGTK_CODEGEN是什么,请查看顶层configure.in文件,其中包含以下行:

AC_MSG_CHECKING(for pygtk codegen)
PYGTK_CODEGEN="$PYTHON `$PKG_CONFIG  variable=codegendir pygtk-2.0`/codegen.py"
AC_SUBST(PYGTK_CODEGEN)
AC_MSG_RESULT($PYGTK_CODEGEN)

因此,处理它的程序是一个名为代码生成.py,显然与PyGTK有某种联系。现在Google搜索PyGTK codegen得到的第一个结果是{a1},上面说:

“PyGTK Codegen是一个自动生成包装器的系统,用于GTK代码与Python的接口。”

并举例说明。在

至于:“格式是什么,文件记录在哪里?”。正如其他人所说,代码看起来很像简单的Scheme。我在PyGTK站点上根本找不到任何关于codegen的文档;这看起来像是开源中许多没有很好文档记录的黑暗角落之一。最好的办法可能是为PyGTK下载一个最近的tarball,查看codegen.py文件的源代码,看看文件本身是否包含足够的文档。在

相关问题 更多 >