QT运行导入python(pytorch)程序进行深度学习(qmake)

这个问题困扰了四天,终于解决了,记录一下。

1.需要一个完整的python能够运行pytorch环境,这里我已经搭建好了

2.QT需要安装MCSV编译器(必须用这个,因为WINGW不支持.lib的python库)

参考这个教程:

Qt 添加MSVC2017编译器(2022年保姆级教程,不安装完整VS)_qt msvc2017-CSDN博客

安装完之后,你的QT会多出几个kit,你需要使用64位的MSVC的编译器

配置完之后,开始QT的配置

3.导入PYTHON环境,自己添加一个新的,参数和工作目录不变,执行挡选择你的含有pytorch的python环境

 4.导入python库,参考下面这个文章,很重要

c++Qt Creator调用 python 完整版 + 解决bug过程_qt调用python-CSDN博客

5. 最重要的来了:当你导进去之后会出现各种奇怪的报错,全部踩了一遍。

这是由于安装的python为Release版本,而你的C++项目为Debug模式,因此更改你的项目为Release模式。另外需要注意,区分32位和64位,一定按照下图进行设置⭐⭐⭐⭐

6.这里的python程序,就使用上文提到那篇文章的程序,打印hello,这里会显示打不开python文件,需要自己手动添加编译器路径

#include "widget.h"
#include <QApplication>
#include <QCoreApplication>
#include <Python.h>
#include <iostream>
#include <QDebug>
#include <stdio.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    
    //添加python解释器搜索路径
    PyObject* sysPath = PySys_GetObject("path");
    PyObject* newModulePath = PyUnicode_DecodeFSDefault("D:\\download\\qt_fft\\QChart1");
    PyList_Append(sysPath, newModulePath);
    Py_DECREF(newModulePath);

    PyObject* sysPath1 = PySys_GetObject("path");
    for (Py_ssize_t i = 0; i < PyList_Size(sysPath1); i++) {
        PyObject* path = PyList_GetItem(sysPath1, i);
        qInfo() << "Python Path:" << QString::fromUtf8(PyUnicode_AsUTF8(path));
    }
    PyObject* module=PyImport_ImportModule("testPython");
    if (!module){
        PyErr_Print();  // 打印详细的错误信息
        qInfo()<<"Python file cant open!";
        return -1;
    }
    PyObject* pFunc=PyObject_GetAttrString(module,"hello");
    if (!pFunc){
        qInfo()<<"the Python function cant load!";
        return -1;
    }
    //调用函数
    PyObject_CallFunction(pFunc,NULL);

    Py_Finalize();
    return a.exec();
}

问题1:无法找到python39_d.lib文件:因为处于debug状态下,需要_d文件去支持debug,所以要切换到release

问题2:无法解析的外部符号 __imp___Py_RefTotal,找不到PyObject_GetAttrString,需要从32位的版本切换到64位版本

问题3:Qt报错dependent ‘..\..\..\..\..\..\Qt\5.14.2\msvc2017\include\QtWidgets\QMainWindow‘ does not exist:pro文件添加QMAKE_PROJECT_DEPTH = 0
 

### 如何在Cuba 12.7操作系统上安装PyTorch #### 准备工作 确保系统已更新至最新状态并安装必要的依赖项。对于基于Debian的操作系统如Cuba,可以使用如下命令来完成这些操作: ```bash sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install build-essential cmake git pkg-config libopencv-dev \ libgtk-3-dev libboost-all-dev libvtk7-dev python3-pip python3-setuptools \ python3-numpy python3-scipy curl wget unzip yasm libjpeg-dev libpng-dev \ libtiff-dev zlib1g-dev libavcodec-dev libavformat-dev libswscale-dev \ libdc1394-22-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev \ libopenblas-dev liblapack-dev checkinstall gfortran libhdf5-dev libatlas-base-dev \ qtbase5-dev qtchooser qt5-qmake qtbase5-private-dev libeigen3-dev libgstreamer-plugins-base1.0-dev \ libgstreamer1.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev \ librtmp-dev libssh-dev libtheora-dev libvdpau-dev libvorbis-dev libxine2-dev \ libxvidcore-dev x264 v4l-utils ffmpeg ``` #### 安装CUDA和cuDNN 由于提到的是针对特定版本的CuBLAS (即文中所指代的"Cuba"),这里假设是指向NVIDIA CUDA Toolkit及其配套组件cuDNN。按照官方文档指引下载适合目标平台架构(此处为Linux x86_64)以及所需的具体版本号。 访问[NVIDIA官网](https://developer.nvidia.com/cuda-downloads),选择对应的OS、Architecture、Version等参数获取合适的安装包链接;同样地,在[cuDNN Archive页面](https://developer.nvidia.com/rdp/cudnn-archive)挑选相匹配的版本进行部署。 #### 配置环境变量 编辑`~/.bashrc`文件加入以下路径设置(具体目录视实际安装位置而定),使终端能够识别新安装的工具链: ```bash export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH source ~/.bashrc ``` 验证配置是否生效: ```bash nvcc --version ``` #### 使用pip安装PyTorch 前往[PyTorch官方网站](https://pytorch.org/get-started/locally/)找到适用于当前系统的安装命令。鉴于已经完成了CUDA部分的工作,则应选取支持GPU加速的那一栏下的建议方案之一执行安装。例如,如果要安装稳定版且兼容CUDA 11.x 的 PyTorch 和 TorchVision ,可运行下列指令: ```bash pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113 ``` 注意上述URL中的`cu113`代表了CUDA toolkit 版本号,请依据实际情况调整此值以确保与先前安装好的驱动程序保持一致[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值