如何使用 Boost.Python 在 Python 中调用内置函数
Posted
技术标签:
【中文标题】如何使用 Boost.Python 在 Python 中调用内置函数【英文标题】:How can I call built-in functions in Python using Boost.Python 【发布时间】:2018-11-02 11:20:01 【问题描述】:我知道我们可以 import modules 并将 Python 代码嵌入 C++ 和 evaluate it。但是我怎样才能使用像print
或open
这样的内置函数呢?这些功能当然不是模块。评估嵌入的 open
语句只会给我以下错误:
Traceback (most recent call last):
File "<string>", line 1, in <module>
NameError: name 'open' is not defined
卡住了。请帮帮我。
【问题讨论】:
你可以import builtins
,但不知道这是否有帮助......
【参考方案1】:
尝试导入builtins
和io
模块,如果您想要任何其他功能,只需调用__module__
属性以查找要导入的模块
>>> print.__module__
'builtins'
>>> open.__module__
'io'
【讨论】:
你确定吗?如果显示NameError
,open.__module__
将如何工作。
@scipsycho 我不明白它在哪里显示名称错误?我为此使用了python3
你是对的@AlbinPaul,但我只是说问这个问题的人有一个NameError
,那么他怎么能跑open.__module__
@scipsycho 好的,函数 open 在 python3 中的模块 io
和 python2 中的 builtin
中定义,默认情况下在程序中导入,以避免在 c++ 中出现名称错误,OP 必须导入内置模块或 io 模块使其运行
感谢@AlbinPaul!不过,在我的环境中,open
似乎生活在__builtin__
中。无论如何,通过导入__builtin__
模块,我的问题已经解决了。以上是关于如何使用 Boost.Python 在 Python 中调用内置函数的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Boost.Python 在 Python 中调用内置函数
如何使用 boost/python 向 python 公开 C++ 虚函数?
如何使用 Boost Python 从 C++ bool 转换为 Python boolean?