Как исправить «ImportError: ни один модуль с именем tenesflow» при встраивании python в C ++ - PullRequest
1 голос
/ 31 марта 2019

Мой вопрос касается встраивания python в C ++.Я хочу встроить модуль Python, который импортирует тензор потока и Numpy.Я был в состоянии вставить код Python, который не импортирует тензорный поток или NumPy успешно.Кроме того, в моем питоне нет проблем с использованием tenorflow.Моя установка - ОС: Linux Ubuntu 16.04 Python версия: 3.5

Я тестировал различные случаи, используя PyRun_SimpleString ().Я попытался Импортировать тензор потока, когда встраивание python в c ++ возвращает ноль

Py_Initialize();
PySys_SetArgv(argc, (wchar_t**)argv);
PyRun_SimpleString("import os \n"
                       "print('Hello TF!!!')");)
Py_Finalize();

, но он выдал ошибку как

Fatal Python error: no mem for sys.argv
ValueError: character U+65442f2e is not in range [U+0000; U+10ffff]

Current thread 0x00007f5a69506740 (most recent call first):
Aborted (core dumped)

Вот мои main.cpp и CMakeLists.TXT-файлы:

main.cpp:

#include "Python.h"
#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

    Py_Initialize();
    PyRun_SimpleString("import tensorflow \n"
                       "print('Hello TF!!!')");
    Py_Finalize();
    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.13)
project(Demo)

set(CMAKE_CXX_STANDARD 14)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/include/python3.5 -I/usr/include/x86_64-linux-gnu/python3.5  -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security  -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes")

add_executable(Demo main.cpp)

set(PYTHON_EXECUTABLE "/usr/bin/python3.5")
set(PYTHON_INCLUDE_DIR "/usr/include/python3.5m")
set(PYTHON_LIBRARIES "/usr/lib/x86_64-linux-gnu/libpython3.5m.so")

include_directories(${PYTHON_INCLUDE_DIRS})
include_directories(${PYTHON_DIRECTORIES})
target_link_libraries(Demo ${PYTHON_LIBRARIES})

построить код, используякоманда:

cmake --build . --target Demo -- -j 2

Выполнить с помощью команды:

./Demo

При запуске программы выдается следующее сообщение об ошибке:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named 'tensorflow'

Вместо «import tenorflow», еслиЯ использовал «import os» / «import time» в «Hello TF !!!»это результат.

Как я могу устранить эту ошибку?Есть ли в CMakeList.txt какая-то недостающая вещь?

1 Ответ

0 голосов
/ 08 апреля 2019

Снова я установил Tensorflow в соответствии с шагами, приведенными в https://www.tensorflow.org/install/pip, и выполнил приведенный выше код в созданной виртуальной среде. Затем проблема была решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...