Неопределенный символ: pyobject_ selficiter при использовании cpython c api [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Неопределенный символ: pyobject_ selficiter при использовании cpython c api [дубликат]

Сообщение Anonymous »

Я хочу использовать CPYTHON C API, но все же получил это < /p>

Код: Выделить всё

[component_container-1] Traceback (most recent call last):
[component_container-1]   File "/usr/local/lib/python3.10/dist-packages/numpy/core/__init__.py", line 24, in 
[component_container-1]     from . import multiarray
[component_container-1]   File "/usr/local/lib/python3.10/dist-packages/numpy/core/multiarray.py", line 10, in 
[component_container-1]     from . import overrides
[component_container-1]   File "/usr/local/lib/python3.10/dist-packages/numpy/core/overrides.py", line 8, in 
[component_container-1]     from numpy.core._multiarray_umath import (
[component_container-1] ImportError: /usr/local/lib/python3.10/dist-packages/numpy/core/_multiarray_umath.cpython-310-x86_64-linux-gnu.so: undefined symbol: PyObject_SelfIter
[component_container-1]
[component_container-1] During handling of the above exception, another exception occurred:
[component_container-1]
[component_container-1] Traceback (most recent call last):
[component_container-1]   File "/usr/local/lib/python3.10/dist-packages/numpy/__init__.py", line 130, in 
[component_container-1]     from numpy.__config__ import show as show_config
[component_container-1]   File "/usr/local/lib/python3.10/dist-packages/numpy/__config__.py", line 4, in 
[component_container-1]     from numpy.core._multiarray_umath import (
[component_container-1]   File "/usr/local/lib/python3.10/dist-packages/numpy/core/__init__.py", line 50, in 
[component_container-1]     raise ImportError(msg)
[component_container-1] ImportError:
< /code>
Мой текущий файл cmakelist < /p>
set(My_Python_Version "3.10")
find_package(Python ${My_Python_Version} EXACT COMPONENTS Interpreter Development NumPy REQUIRED)
message(STATUS "Using Python: ${Python_EXECUTABLE}")
message(STATUS "Python include: ${Python_INCLUDE_DIRS}")
message(STATUS "Python numpy include: ${Python_NumPy_INCLUDE_DIRS}")

# execute_process(COMMAND ${Python_EXECUTABLE} -c "import numpy;print(numpy.get_include())" OUTPUT_VARIABLE Python_NumPy_INCLUDE_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)

# execute_process(COMMAND which python3 OUTPUT_VARIABLE Python_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE)
# execute_process(COMMAND ${Python_EXECUTABLE} -c "import sysconfig; print(sysconfig.get_paths()['include'])" OUTPUT_VARIABLE Python_INCLUDE_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
# execute_process(COMMAND ${Python_EXECUTABLE} -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))" OUTPUT_VARIABLE Python_LIBRARY_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
# set(Python_LIBRARY "${Python_LIBRARY_DIR}/libpython3.10.so")

# include_directories(/usr/include/python3.10)

...

target_link_libraries(mynode
${OpenCV_LIBS}
${cpp_typesupport_target}
${ONNX_LIBS}
${TORCH_LIBS}
${Python_LIBRARIES}
common_tool_lib
)
target_include_directories(mynode PRIVATE
/usr/local/onnxruntime/include
/usr/local/libtorch/include
/usr/local/libtorch/include/torch/csrc/api/include
${Python_INCLUDE_DIRS}
${Python_NumPy_INCLUDE_DIRS}
)
< /code>
Я пробовал различные методы и даже спросил несколько инструментов ИИ, но все еще не могу решить это, и, похоже, я должен отказаться от вызова кодов Python из моей среды C ++.  Есть идеи?MyNode::MyNode(const rclcpp::NodeOptions& options)
: BaseNode("perception_node", options), time_stamp_(0), tracking_module_(nullptr), tracking_function_(nullptr) {

// Initialize Python interpreter
if (!Py_IsInitialized()) {
Py_Initialize();
// Initialize numpy by importing it
PyRun_SimpleString("import numpy");
}

// Import tracking module
PyObject* sys_path = PySys_GetObject("path");
PyObject* path_str = PyUnicode_FromString("/workspaces/perception/LSTM_Tracking/Tracking");
PyList_Append(sys_path, path_str);
Py_DECREF(path_str);

tracking_module_ = PyImport_ImportModule("Track_infer");
if (!tracking_module_) {
RCLCPP_ERROR(this->get_logger(), "Failed to import tracking module");
PyErr_Print();
} else {
tracking_function_ = PyObject_GetAttrString(tracking_module_, "return_tracking_id");
if (!tracking_function_) {
RCLCPP_ERROR(this->get_logger(), "Failed to get tracking function");
PyErr_Print();
}
}
Это конструктор MyNode, у меня проблемы даже за запуском


Подробнее здесь: https://stackoverflow.com/questions/797 ... thon-c-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»