在 C++ 中嵌入 python:无法识别 python 脚本
embedding python in c++: python script not recognized
我正在尝试将 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 脚本,即对象 pyModule 始终为 NULL,无论我如何更改 python 脚本路径。
我做错了什么?
我最终以另一种方式实现了这一点。
#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想法不起作用。
我正在尝试将 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 脚本,即对象 pyModule 始终为 NULL,无论我如何更改 python 脚本路径。
我做错了什么?
我最终以另一种方式实现了这一点。
#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想法不起作用。