Python 如何强制swig在模块的帮助页面中生成适当的参数列表?
使用Python 如何强制swig在模块的帮助页面中生成适当的参数列表?,python,swig,pydoc,Python,Swig,Pydoc,使用SWIG生成的模块的help页面没有太大帮助。事实上,它甚至没有列出每个函数的参数 模块示例帮助: 名称 例子 文件 /home/anon/example.py 描述 #此文件由SWIG自动生成(http://www.swig.org). #版本3.0.12 # #除非您知道自己在做什么,否则不要对此文件进行更改--修改 #而不是SWIG接口文件。 功能 事实(……) 获取时间(…) 我的_mod(…) 资料 cvar= (完) 问题:有没有一种方法可以告诉swig——通过一些选项——至少
SWIG
生成的模块的help
页面没有太大帮助。事实上,它甚至没有列出每个函数的参数
模块示例帮助:
名称
例子
文件
/home/anon/example.py
描述
#此文件由SWIG自动生成(http://www.swig.org).
#版本3.0.12
#
#除非您知道自己在做什么,否则不要对此文件进行更改--修改
#而不是SWIG接口文件。
功能
事实(……)
获取时间(…)
我的_mod(…)
资料
cvar=
(完)
问题:有没有一种方法可以告诉swig——通过一些选项——至少包括每个函数的命名参数的确切列表
我想至少得到以下信息:
。。。
事实(n)
...
my_mod(x,y)
...
一般而言,更高质量的文件也将受到欢迎
我知道,如果我将原始函数foo
重命名为\u foo
,然后手动定义一个新的foo()
,就可以得到这个结果。但是,是否有其他系统性的内置方法可以达到同样的目的
这是我执行的命令列表,摘自: 文件
example.c
:
/*文件:example.c*/
#包括
双My_变量=3.0;
整数事实(整数n){
如果(n参见SWIG文档中的
特别是,autodoc
功能与您的示例配合得很好。只需使用:
swig -python -features autodoc example.i
样本输出:
>>> import example
>>> help(example)
Help on module example:
NAME
example
DESCRIPTION
# This file was automatically generated by SWIG (http://www.swig.org).
# Version 3.0.12
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.
FUNCTIONS
fact(n)
fact(int n) -> int
get_time()
get_time() -> char *
my_mod(x, y)
my_mod(int x, int y) -> int
DATA
cvar = <Swig global variables>
FILE
c:\example\example.py
>>导入示例
>>>帮助(示例)
有关模块示例的帮助:
名称
例子
描述
#此文件由SWIG自动生成(http://www.swig.org).
#版本3.0.12
#
#除非您知道自己在做什么,否则不要对此文件进行更改--修改
#而不是SWIG接口文件。
功能
事实(n)
事实(int n)->int
获取时间()
获取时间()->char*
my_mod(x,y)
my_mod(intx,inty)->int
资料
cvar=
文件
c:\example\example.py
另一种选择是使用doxy2swig.py
,请参见
使用doxygenexample.h的标题
#pragma once
extern double My_variable; ///< My variable for something
/**
* Factorial function
*
* @param n
*
* @return n!
*/
extern int fact(int n);
/**
* Module function
*
* @param x
* @param y
*
* @return
*/
extern int my_mod(int x, int y);
/**
* Get the current time
*
*
* @return string representation of time
*/
extern char *get_time();
要进行SWIG和编译,请执行以下操作。如果愿意,当然可以使用automake或CMake很好地进行设置
doxygen -g
sed -i 's/GENERATE_XML = NO/GENERATE_XML = YES/g' Doxyfile
python doxy2swig.py -c -a ./xml/index.xml documentation.i
swig -python example.i
gcc -fPIC -c example.c example_wrap.c -I/usr/include/python2.7
ld -shared example.o example_wrap.o -o _example.so
在Python中,文档显示为
In [1]: import example
In [2]: help(example.get_time)
Help on function get_time in module example:
get_time()
Get the current time
Returns
-------
string representation of time
get_time() -> char *
它概括了类的文档,并且非常灵活。另一个选项是使用doxygen生成.xml
输出,并使用doxy2swig.pl
生成一个全面的文档,它可以包含在.i
文件中。请参阅例如@JensMunk将其作为答案发布,可能带有mcve,因此我可以投票支持你的建议,它可以更明显。我会这么做的,这很好
doxygen -g
sed -i 's/GENERATE_XML = NO/GENERATE_XML = YES/g' Doxyfile
python doxy2swig.py -c -a ./xml/index.xml documentation.i
swig -python example.i
gcc -fPIC -c example.c example_wrap.c -I/usr/include/python2.7
ld -shared example.o example_wrap.o -o _example.so
In [1]: import example
In [2]: help(example.get_time)
Help on function get_time in module example:
get_time()
Get the current time
Returns
-------
string representation of time
get_time() -> char *