Ubuntu18.04下 Qt调用conda下的python

在ubuntu + anaconda的环境下,使用qt调用python编程。
qt调用python搭建环境还是挺简单的,但我在调用 import_array(); 时总是报错,费好长时间才解决问题,特意记录一下。
环境:
Ubuntu18.04
QtCreator
anaconda
python3.8.5
numpy1.19.2
pytorch1.8.1

第1步、先用conda创建一个虚拟环境python3.8.5_pytorch。(当然不用虚拟环境也是可以的)
conda create -n python3.8.5_pytorch python=3.8.5

然后我们激活环境,试用一下python是否可用。
激活环境:source activate python3.8.5_pytorch
依次输入以下代码试用python:
python
import numpy
numpy.version
正确结果:
用numpy来测试python

第2步、在qt的pro文件中添加python库和头文件的路径
用qt新建一个项目,打开pro文件,添加路径。
我们在第一步使用conda创建虚拟环境后,就会在~/anaconda/envs的目录下创建虚拟环境的文件夹。
例如我的路径:
python路径
那么我们在pro文件中添加:
pro文件中添加python路径
site-packages/numpy是为了让qt能使用python时能调用numpy。

第3步、设置环境变量
首先设置.bashrc文件。
vim ~/.bashrc
输入:
export PYTHONPATH=/home/ps/anaconda3/envs/python3.8.5_pytorch
保存退出,激活一下环境:
source ~/.bashrc
切记:不要在~/.bashrc中修改PYTHONHOME,可能是因为Ubuntu18.04中自带了python2.7和python3.6,修改后会导致conda无法使用,报错:from conda.cli import main ModuleNotFoundError: No module named ‘conda’
如果不小心设置了,可以用 export PYTHONHOME= 修改回来。
别问我为什么知道。o(╥﹏╥)o
修改.bashrc

第4步,修改QtCreator的环境变量
打开Qt左侧的“项目”一栏,选中Build,点开“构建环境”的“详情”。
QtCreator >> 项目 >> Build >> 构建环境 >> 详情
选择“添加”,依次加入:
PYTHONHOME /home/ps/anaconda3/envs/python3.8.5_pytorch
PYTHONPATH /home/ps/anaconda3/envs/python3.8.5_pytorch
QtCreator的环境配置

第5步,写代码
加入头文件
#include <Python.h>
#include <numpy/arrayobject.h>
如果之前pro文件中没有加入numpy目录的话,这会儿是找不到 numpy/arrayobject.h 文件的。
Py_Initialize(); //初始化Python
PyRun_SimpleString(“import sys”);
PyRun_SimpleString(“sys.path.append(’./python’)”); //修改Python路径,因为我的python文件在./python目录下
import_array(); //如果需要用到numpy时,需要先添加这句话
PyRun_SimpleString(“print(‘hello Python!’)”); //测试一下
测试Qt调用python代码
正确结果:
调用python测试结果
编译时可能会有报错:error: expected unqualified-id before “;” token
解决办法:因为python的object.h文件与slots有冲突,需要修改object.h文件,可以先把原文件保存一份。cp object.h object.h.bat
解决object.h报错

注意:python的print打印信息是不会打印在Qt的输出控制台的,需要用terminal窗口才能打印输出结果。
设置terminal

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值