首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从C++调用Python代码(包括导入的第三方模块)?

如何从C++调用Python代码(包括导入的第三方模块)?
EN

Stack Overflow用户
提问于 2021-01-26 14:15:00
回答 1查看 144关注 0票数 0

我正在使用Visual在Windows上开发一个程序,并试图从C++调用一些简单的python代码。

我尝试过cython,例如,我的.pyx文件如下所示:

代码语言:javascript
复制
import torchvision.transforms as transforms
from scipy.interpolate import interp1d

cdef public tf(input):
    f = interp1d(..., list(input), kind='cubic')
    im = f(...)
    tf = transforms.Compose([transforms.Resize((112, 112)), ...)])
    return tf(im)

并通过cython xxx.pyx或编写一个python setup.py来计算它。

在添加生成的文件和python依赖关系(我的项目)之后,链接和编译都很好,但是当运行时,来自第三方模块__pyx_n_s_interp1d 的符号将在 __Pyx_GetModuleGlobalName() 函数中失败,而导入的模块似乎不包括在生成的 .c 文件中。

因此,问题是如何通过Cython或其他实用程序(如pythran、pybind11等)从C++调用python代码(包括来自第三方模块的函数)。

EN

回答 1

Stack Overflow用户

发布于 2021-01-26 14:22:13

在构建在不同语言(大多数情况下是c#)的项目中,我通常所做的工作是通过pyinstaller --onefile script_path编译Python代码,使用Name_of_executable some args从新进程开始编译脚本,并在完成后读取stdout值。我不知道在c++中启动新进程相当于什么,但在c#中,您可以使用System.Diagnostics.Process。Pyinstaller在可执行文件中包含所有模块和导入,我知道这不是最佳实践,但它通常可以工作。

编辑:您可以通过pip install pyinstaller安装pyinstaller

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65902998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档