Как присвоить переменной на c++ значение выполнения программы на python
У меня есть мини программа на python, которая получает путь до установленного python
import os
import sys
dir = os.path.dirname(sys.executable)+r'\Scripts'
Я хотел запустить её из программы на c++ и присвоить переменной значение выполнения программы
Запускаю её в c++ через system("test.py"); и мне возвращается 0 - программа выполнена успешно. Но как мне сделать чтобы результат работы сохранился в переменную? Сама программа даёт вывод, например: C:\Users\Пользователь\AppData\Local\Programs\Python\Python37-32\Scripts и мне нужно записать именно это в переменную, а не 0. На c++ переменная типа string.
Как это можно сделать?
Ответы (1 шт):
По сути, вам нужно #include , Py_Initialize()чтобы запустить интерпретатор Python.
Затем вы делаете import sys, используя:, PyRun_SimpleString("import sys");и вы можете загрузить свой плагин, выполнив PyRun_SimpleString('sys.path.append("path/to/my/module/")').
Чтобы обмениваться значениями между C ++ и Python, все становится сложнее, вам нужно преобразовать все ваши объекты C ++ в объекты Python (начиная с строки 69 в моем скрипте).
Затем вы можете вызывать свою функцию используя PyObject_Call_Object(...)все объекты python, которые вы создали в качестве аргументов.
Вы получаете возвращаемое значение и преобразуете все эти значения в объекты C ++. И не забывайте об управлении памятью во всем этом!
Чтобы закончить ваш интерпретатор Python, простой вызов Py_Finalize().