Я пытаюсь встроить Python в C++ и попытался скомпилировать и запустить следующее
int main()
{
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\nprint('Today is', ctime(time()))\n");
Py_FinalizeEx();
return(EXIT_SUCCESS);
}
и я получаю сообщение об ошибке
Could not find platform independent libraries
Fatal Python error: Failed to import encodings module
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'
Current thread 0x000057a8 (most recent call first):
Я попробовал решение здесь: правильный ли мой диагноз причины «Не удалось найти независимые от платформы библиотеки » и как я могу это исправить?, но я работаю в Windows и видел некоторые противоречивые ответы о том, следует ли нам устанавливать PYTHONPATH или PYTHONHOME. Я собрал cpython из исходного кода (Python 3.13.9), и он правильно вызывает его из командной строки (а кодировки импорта не выдают никаких ошибок). Я использую Visual Studio 2022 и CMake для обработки пакетов. Ошибок при компиляции нет. Я пробовал использовать официальные примеры на сайте API Python, но все равно выдает ту же ошибку. У меня есть папка Libs и папка amd64 в системном пути. Я не использую виртуальную среду, просто вызываю созданный мной Python.
Я совершенно не знаю, что вообще можно попробовать. Спасибо!
Изменить: это другая реализация, которую я пробовал, которая также выдает ту же ошибку.
#define PY_SSIZE_T_CLEAN
#include
#include
using namespace std;
int main(int argc, char** argv)
{
PyStatus status;
PyConfig config;
PyConfig_InitPythonConfig(&config);
config.isolated = 1;
/* Decode command line arguments.
Implicitly preinitialize Python (in isolated mode). */
status = PyConfig_SetBytesArgv(&config, argc, argv);
if (PyStatus_Exception(status)) {
goto exception;
}
status = Py_InitializeFromConfig(&config);
if (PyStatus_Exception(status)) {
goto exception;
}
PyConfig_Clear(&config);
return Py_RunMain();
exception:
PyConfig_Clear(&config);
if (PyStatus_IsExit(status)) {
return status.exitcode;
}
/* Display the error message and exit the process with
non-zero exit code */
Py_ExitStatusException(status);
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... for-python