【问题标题】:embedding python in c++: python script not recognized在 C++ 中嵌入 python:python 脚本无法识别
【发布时间】:2019-08-22 06:52:10
【问题描述】:

我正在尝试将 python 脚本嵌入到 c++ 项目中。 以下是我迄今为止尝试过的。

#include<iostream>
#include <Python.h>

int
main()
{
    Py_Initialize();
    PyObject* sysPath = PySys_GetObject("path"); 
    PyObject* modPath = PyBytes_FromString("C:\\Users\\naal\\Documents\\Visual Studio 2017\\Projects\\Project1\pyscripts");
    int result = PyList_Insert(sysPath,0, modPath);
    PyObject *pModule = PyImport_ImportModule("myscript2");
    printf("%p\n", pModule);
    return 0;
}

下面是python脚本“myscript2.py”

def find_me():
    print("hey you found me")

问题是,无论我如何更改 python 脚本路径,主模块都无法找到 python 脚本,即对象 pyModule 始终为 NULL。

我做错了什么?

【问题讨论】:

    标签: python c++ embed


    【解决方案1】:

    我最终以另一种方式实现了这一点。

    #include<iostream>
    #include <Python.h>
    
    int main() {    
           std::string location = "C:\\Users\\myscript.py";     
           const char* file_location = location.c_str();    FILE* file_pointer;          
           Py_Initialize();
           file_pointer = _Py_fopen(file_location, "r");
           PyRun_SimpleFile(file_pointer, file_location);
    
           Py_Finalize();
           return 1;
           }
    

    上述方法似乎有效。我仍然不知道为什么问题中最初提到的 SYSPATH 想法不起作用。

    【讨论】:

      猜你喜欢
      • 2014-08-11
      • 1970-01-01
      • 2018-09-25
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 2020-03-14
      相关资源
      最近更新 更多