概述
环境 ubuntu16.04
1.前言
之前写过一篇博客是关于c++调用系统的python环境的.
ubuntu c++ 调用 python
那么如果我想调用conda的环境可以吗?
答案是可以的(qtcreator中需要配置Python环境)
2021/5/17 更新 感谢评论区老哥的提醒!在qtcreator中想要使用python,有两种设置方式
- 终端添加Python到环境变量中,然后打开qtcreator
export PYTHONHOME=/home/jinye/anaconda3/envs/tensorflow-gpu
- 打开qtcreator->项目->run->Run Environment 添加变量PYTHONHOME
2.c++
2.1cpp
cpp文件与之前相同
#include <Python.h>
int main(int argc, char *argv[]) {
Py_Initialize();
//判断初始化是否成功
if(!Py_IsInitialized())
{
printf("Python init failed!n");
return -1;
}
PyRun_SimpleString("import sys");
//PyRun_SimpleString("sys.path.append('./')");//若python文件在c++工程下
// 添加python文件所在的位置
PyRun_SimpleString("sys.path.append('/home/jinye/projects/D3Feat')");
PyObject* pModule = NULL;
PyObject* pFunc = NULL;
//导入python文件
pModule = PyImport_ImportModule("forcpp");
if (!pModule) {
printf("Can not open python file!n");
return -1;
}
pFunc = PyObject_GetAttrString(pModule, "printHello");
//PyEval_CallObject(pFunc, NULL);
PyObject_CallObject(pFunc, NULL);
Py_DECREF(pFunc);
Py_DECREF(pModule);
Py_Finalize();
return 0;
}
2.2CMakeLists.txt
只是修改了头文件和库文件的路径
cmake_minimum_required(VERSION 2.8)
project(python_test)
include_directories(
/home/jinye/anaconda3/envs/tensorflow-gpu/include/python3.7m
)
add_executable(main
main.cpp)
target_link_libraries(main
/home/jinye/anaconda3/envs/tensorflow-gpu/lib/libpython3.7m.so
)
3.python
py文件与之前的相比只是增加了tensorflow库,没错,打印了tf的消息证实我们调用的是另一个python环境.
import tensorflow as tf
import sys
def printHello():
print(sys.version)
print('tf -V: ', tf.__version__)
print("hello world!")
4.在qtcreator中碰到的问题
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: initfsencoding: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'
Current thread 0x00007f63049dc700 (most recent call first):
The program has unexpectedly finished.
The process was ended forcefully.
被这个问题折磨了好久,脑阔疼!
两种处理方式
- 终端编译时指定路径:
cmake .. "-DCMAKE_PREFIX_PATH=/path/to/anaconda/envs/env_name"
哇,我在终端测试了一下,编译没有问题,可执行文件也可以运行,这就说明我所指向的conda虚拟环境中的头文件和库文件没有问题.
- qtcreator添加Python路径
打开qtcreator->项目->run->Run Environment 添加变量PYTHONHOME
参考
https://zhuanlan.zhihu.com/p/103219038
最后
以上就是如意音响为你收集整理的ubuntu c++ 调用 conda的python虚拟环境的全部内容,希望文章能够帮你解决ubuntu c++ 调用 conda的python虚拟环境所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复