Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在克利永中使用虚拟环境调用C++中的Python? < P>我想用一个虚拟环境从克利永调用C++的Python。 Could not find platform independent libraries <prefix> Could not find platform dependent libraries <exec_prefix> Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] Fatal Python error: Py_Initialize: Unable to get the locale encoding ModuleNotFoundError: No module named 'encodings' Current thread 0x00007fbd24916680 (most recent call first):_C++_Python 3.x_Cmake_Anaconda_Clion - Fatal编程技术网

如何在克利永中使用虚拟环境调用C++中的Python? < P>我想用一个虚拟环境从克利永调用C++的Python。 Could not find platform independent libraries <prefix> Could not find platform dependent libraries <exec_prefix> Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] Fatal Python error: Py_Initialize: Unable to get the locale encoding ModuleNotFoundError: No module named 'encodings' Current thread 0x00007fbd24916680 (most recent call first):

如何在克利永中使用虚拟环境调用C++中的Python? < P>我想用一个虚拟环境从克利永调用C++的Python。 Could not find platform independent libraries <prefix> Could not find platform dependent libraries <exec_prefix> Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] Fatal Python error: Py_Initialize: Unable to get the locale encoding ModuleNotFoundError: No module named 'encodings' Current thread 0x00007fbd24916680 (most recent call first):,c++,python-3.x,cmake,anaconda,clion,C++,Python 3.x,Cmake,Anaconda,Clion,我可以使用Py_初始化;关于C++,当我在终端上运行它,但是当我在cLyon上运行时,我不能使用它。 以下是在Clion中运行时的错误消息 Could not find platform independent libraries <prefix> Could not find platform dependent libraries <exec_prefix> Consider setting $PYTHONHOME to <prefix>[:<exe

我可以使用Py_初始化;关于C++,当我在终端上运行它,但是当我在cLyon上运行时,我不能使用它。 以下是在Clion中运行时的错误消息

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007fbd24916680 (most recent call first):

我已经修改了您的CMakeLists.txt,以使用查找Python解释器和Python库的标准方法。你能放手吗?如果您拥有CMake 3.14或更高版本,那么查找NumPy的功能已经具备

否则,如果您有较旧版本的CMake,则可以添加测试以检查NumPy是否可用:

cmake_minimum_required( VERSION 3.6 )
# Create Project
project( Python2CPP )

# Require C++14 (or Later)
set( CMAKE_CXX_STANDARD 14)
set( CMAKE_CXX_STANDARD_REQUIRED ON )

find_package(PythonInterp REQUIRED)
find_package(PythonLibs ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} EXACT REQUIRED)

find_package(OpenCV REQUIRED)

# Find NumPy location
execute_process(
        COMMAND
        ${PYTHON_EXECUTABLE} "-c" "import re, numpy; print(re.compile('/__init__.py.*').sub('',numpy.__file__))"
        RESULT_VARIABLE _numpy_status
        OUTPUT_VARIABLE _numpy_location
        ERROR_QUIET
        OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT _numpy_status)
    set(NumPy ${_numpy_location} CACHE STRING "Location of NumPy")
endif()

# Find NumPy version
execute_process(
        COMMAND
        ${PYTHON_EXECUTABLE} "-c" "import numpy; print(numpy.__version__)"
        OUTPUT_VARIABLE _numpy_version
        ERROR_QUIET
        OUTPUT_STRIP_TRAILING_WHITESPACE
)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(NumPy
        FOUND_VAR NumPy_FOUND
        REQUIRED_VARS NumPy
        VERSION_VAR _numpy_version)

add_definitions("-DNOMINMAX")

add_executable( 
    Python2CPP
    src/main.cpp
    src/Python2CPP.cpp
    src/Python2CPP.h )

set_property( DIRECTORY PROPERTY VS_STARTUP_PROJECT "Python2CPP" )

target_include_directories(Python2CPP PRIVATE ${PYTHON_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS})

target_link_libraries(Python2CPP PRIVATE ${PYTHON_LIBRARIES} ${OpenCV_LIBS})
Python虚拟环境


<>在构建C++程序之前,激活Python虚拟环境。如果您使用的是CLion,它有Terminal选项卡。选择该选项并按如下方式激活虚拟环境:source/bin/activate。然后cmake应该找到正确的Python解释器。

您能显示您的CMakeLists.txt吗?您可能找不到Python解释器:find_packagePythonInterpREQUIRED@jignatius谢谢你的评论。我添加了CMakeLists.txt。实际上,我不确定应该找到哪个软件包,所以我直接写了虚拟环境的路径。@Masahiro你是怎么找到的?我补充说,您应该在运行cmake之前激活Python虚拟环境,然后它会找到正确的Python解释器。或者将虚拟环境目录添加到您的路径中。谢谢您的回答,很抱歉我的答复太晚。通知对我不起作用。虚拟环境的激活不起作用。所以我会尝试将虚拟环境目录添加到我的路径中,但我不确定如何添加它。@Masahiro在CLion中有一个终端选项卡。去那里,像这样激活虚拟环境:source/bin/activate。然后使用CLion构建或者从终端运行CMake,它应该会找到正确的Python解释器。我正在使用水蟒和Ubuntu20.04。我通过CLion终端选项卡上的conda activate激活虚拟环境。那么代码就不能通过cmake文件引用虚拟环境。我也尝试通过加载虚拟环境,但它也不起作用。最后,我明白了你的意思!我注意到了
cmake_minimum_required( VERSION 3.6 )
# Create Project
project( Python2CPP )

# Require C++14 (or Later)
set( CMAKE_CXX_STANDARD 14)
set( CMAKE_CXX_STANDARD_REQUIRED ON )

find_package(PythonInterp REQUIRED)
find_package(PythonLibs ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} EXACT REQUIRED)

find_package(OpenCV REQUIRED)

# Find NumPy location
execute_process(
        COMMAND
        ${PYTHON_EXECUTABLE} "-c" "import re, numpy; print(re.compile('/__init__.py.*').sub('',numpy.__file__))"
        RESULT_VARIABLE _numpy_status
        OUTPUT_VARIABLE _numpy_location
        ERROR_QUIET
        OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT _numpy_status)
    set(NumPy ${_numpy_location} CACHE STRING "Location of NumPy")
endif()

# Find NumPy version
execute_process(
        COMMAND
        ${PYTHON_EXECUTABLE} "-c" "import numpy; print(numpy.__version__)"
        OUTPUT_VARIABLE _numpy_version
        ERROR_QUIET
        OUTPUT_STRIP_TRAILING_WHITESPACE
)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(NumPy
        FOUND_VAR NumPy_FOUND
        REQUIRED_VARS NumPy
        VERSION_VAR _numpy_version)

add_definitions("-DNOMINMAX")

add_executable( 
    Python2CPP
    src/main.cpp
    src/Python2CPP.cpp
    src/Python2CPP.h )

set_property( DIRECTORY PROPERTY VS_STARTUP_PROJECT "Python2CPP" )

target_include_directories(Python2CPP PRIVATE ${PYTHON_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS})

target_link_libraries(Python2CPP PRIVATE ${PYTHON_LIBRARIES} ${OpenCV_LIBS})