模块导入上的boost.python代码 当我的C++库导入Python时,我需要调用iTimGoGeleGoGug()。我的C++库使用Booost .python .

模块导入上的boost.python代码 当我的C++库导入Python时,我需要调用iTimGoGeleGoGug()。我的C++库使用Booost .python .,python,boost-python,Python,Boost Python,导入库时如何调用函数?python中没有真正的“定义”。当导入模块时,您在.py模块中输入的任何代码都将执行。恰好大多数时候,放在包文件中的代码都是“definiton”代码,如class或def。在实践中,该代码仍然会被执行,结果只是创建了类和函数定义。从模块中的根命名空间(缩进)调用函数将导致在加载模块后立即调用该函数 只要把它们放进__; init.py。请参阅其中讨论的导出带有别名的包,然后在init.py中展开名称空间 i、 e.(这将是名为foo的子目录中的\uu init\uuuu

导入库时如何调用函数?

python中没有真正的“定义”。当导入模块时,您在.py模块中输入的任何代码都将执行。恰好大多数时候,放在包文件中的代码都是“definiton”代码,如classdef。在实践中,该代码仍然会被执行,结果只是创建了类和函数定义。从模块中的根命名空间(缩进)调用函数将导致在加载模块后立即调用该函数

只要把它们放进__; init.py。请参阅其中讨论的导出带有别名的包,然后在init.py中展开名称空间

i、 e.(这将是名为foo的子目录中的\uu init\uuuuuuuuuuuuuuuuy.py):

另一个替代方法是直接从C++包装模块调用:

BOOST_PYTHON_MODULE(foo)
{
    InitGoogleLogging();

    class_<Foo>("Foo")
        .def("bar", &bar)
    ;
}
BOOST\u PYTHON\u模块(foo)
{
InitGoogleLogging();
类别("Foo")
.def(“bar”和“bar”)
;
}

非常感谢。我喜欢第二种解决方案,但我需要了解argv。python给了我一种进入argv的方法吗?也许我可以调用sys.argv[0]?您是指应用程序的argv吗?如果你愿意,那么是的。@aleksey:我愿意。如何从C++代码中获得sys?ARGV(0)?我的一个评论是,为什么你坚持从C++方面做这些?从Python中可以轻松地完成很多这些事情。如果您担心显示源代码,您可以只分发.pyc或.pyo文件,而不分发.py文件…是的。将Python函数传递给C++代码,并在导入C++代码的模块中使用它,可能更为合理。这感觉更干净,更灵活。
BOOST_PYTHON_MODULE(foo)
{
    InitGoogleLogging();

    class_<Foo>("Foo")
        .def("bar", &bar)
    ;
}