Я пытаюсь встроить 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
Как проверить, где C API ищет Python? ⇐ C++
Программы на C++. Форум разработчиков
1760806817
Anonymous
Я пытаюсь встроить 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);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79793692/how-to-check-where-c-api-is-looking-for-python[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия