看了很多博主经验,然后自己实验总结出来的,就不一一写出处了,非常感谢各位博主的分享经验。

一、安装Python3.6

  1. 安装依赖环境

# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

注:openssl-devel安装失败,暂时放弃这个

  1. 下载安装Python3

# wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz

# tar -zxvf Python-3.6.1.tgz

# cd Python-3.6.1

#./configure --prefix=/usr/python --enable-shared CFLAGS=-fPIC

这里加上--enable-shared和-fPIC之后可以将python3的动态链接库编译出来,默认情况编译完lib下面只有python3.xm.a这样的文件,python本身可以正常使用,但是如果编译第三方库需要python接口的比如caffe等,则会报错;所以这里建议按照上面的方式配置,另外如果openssl不使用系统yum安装的,而是使用自己编译的比较新的版本可以使用--with-openssl=/usr/local/openssl这种方式指定,后面目录为openssl实际安装的目录,另外编译完还要将openssl的lib目录加入ld运行时目录中即可.

  1. 编译安装

make && make install

  1. 建立软连接

# ln -s /usr/local/python3/bin/python3 /usr/bin/python3

如果/usr/bin下存在python3 ,先删除或修改文件名。

  1. 添加PATH

# cd /etc/profile.d/

# vim python3.sh

export PATH="$PATH:/usr/local/python3/bin"

:wq

# source ../profile

# echo $PATH

  1. 检查Python3及pip3是否正常可用

# python3 -V

# pip3 -V

二、安装pip

  1. 安装setuptools

wget --no-check-certificate  https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26

tar -zxvf setuptools-19.6.tar.gz

cd setuptools-19.6

python3 setup.py build

python3 setup.py install

  1. 安装pip

wget --no-check-certificate  https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb

tar -zxvf pip-8.0.2.tar.gz

cd pip-8.0.2

python3 setup.py build

python3 setup.py install

三、安装第三方库numpy

#wget http://jaist.dl.sourceforge.net/project/numpy/NumPy/1.9.0/numpy-1.9.0.zip

#unzip numpy-1.9.0.zip

#cd numpy-1.9.0

#python3 setup.py install

在安装完后,直接运行python,然后输入from numpy import*,出现了

发现是因为没有进对正确的路径,在运行此命令时,需要进入的路径是numpy下的tests文件夹,也就是cd numpy/tests,然后再来进行测试是否安装成功的命令。

四、编写qt代码

关键代码

/* Python解释器的初始化*/

Py_Initialize();

if(!Py_IsInitialized())

{

qDebug()<< ("初始化失败!");

return ;

}

PyRun_SimpleString("import sys");

PyRun_SimpleString("sys.path.append('./')");

/* 导入Python模块,并检验是否正确导入 */

modulename = Py_BuildValue("s", "mytest");

module = PyImport_Import(modulename);

//    PyObject* module = PyImport_ImportModule("mytest"); //

if(!module)

{

qDebug()<<("导入mytest失败!");

return ;

}

/* 获得模块中函数并检验其有效性 */

dic = PyModule_GetDict(module);

if(!dic)

{

qDebug()<<("错误!\n");

return ;

}

/* 获得sum函数地址并验证 */

func_add = PyDict_GetItemString(dic,"myadd");

if(!PyCallable_Check(func_add))

{

qDebug()<<"不能找到函数 "<<"myadd";

return ;

}

func_max = PyDict_GetItemString(dic,"mymax");

if(!PyCallable_Check(func_max))

{

qDebug()<<"不能找到函数 "<<"mymax";

return ;

}

args = PyTuple_New(2); // 2个参数

PyObject* arg1 = PyLong_FromLong(a); // 参数一设为a

PyObject* arg2 = PyLong_FromLong(b); // 参数二设为b

PyTuple_SetItem(args, 0, arg1);

PyTuple_SetItem(args, 1, arg2);

pRet = PyObject_CallObject(func_max, NULL);

// 获取参数

if (pRet) // 验证是否调用成功

{

int result = PyLong_AsLong(pRet);

j++;

qDebug() << QTime::currentTime().toString(Qt::ISODate)<<":result:" << result<<":j:" << j;

ui->label_2->setText(QString("time:%1 \nresult:%2 \nj =%3").arg(QDateTime::currentDateTime().toString("hh:mm:ss:zzz")).arg(result).arg(j));

}

linux下PythonQt混编记录的更多相关文章

  1. Linux下常用的命令记录

    本文章记录我在linux系统下常用或有用的系统级命令,包括软硬件查看.修改命令,有CPU.内存.硬盘.网络.系统管理等命令.但本文不打算介绍生僻命令,也不介绍各个linux发行版下的特有命令,且以后会 ...

  2. linux下计划任务学习记录

    0x01 计划任务简介 linux 中计划任务主要分为”循环执行”和”只执行一次”两种,分别对应的时 crond 服务 和 atd 服务: 0x02 只执行一次的计划任务 0x02.1 atd 服务说 ...

  3. linux下ffmpeg环境搭建记录

    1.Linux下安装yasm 官网下载:http://yasm.tortall.net/Download.html tar -zvxf yasm-1.3.0.tar.gz cd yasm-1.3.0/ ...

  4. cmd&Linux 下使用mysql全记录

    php mysql数据库常用cmd命令集 show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop ...

  5. Linux下ifort的安装记录

    首先进入网址https://software.intel.com/en-us/qualify-for-free-software/student 下载Intel Parallel Studio XE ...

  6. linux下jdk简单配置记录

    记录哈,搭建环境的时候,copy使用方便. vim /etc/profile export JAVA_HOME=/usr/java/jdk1.7.0_79export PATH=$JAVA_HOME/ ...

  7. Linux下安装MongoDB全程记录

    1.下载安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.6.0.tgz 2.解压缩 [root@loca ...

  8. linux 下RTL8723/RTL8188调试记录(命令行)【转】

    本文转载自:http://blog.h5min.cn/wuhongxin123/article/details/41820877 本文是在正确安装好wifi驱动后对系统进行的配置. 1.   配置wp ...

  9. Linux下gdb使用整理记录

    1.创建cpp文件:vim sourcefile.cpp 2.生成可执行文件:g++ -g sourcefile.cpp -o exename ------据说是要必须加上-g参数,否则不可调试 3. ...

随机推荐

  1. js中this的绑定规则及优先级

    一.   this绑定规则 函数调用位置决定了this的绑定对象,必须找到正确的调用位置判断需要应用下面四条规则中的哪一条. 1.1 默认绑定 看下面代码: function foo() { cons ...

  2. 《Dare To Dream 》第三次作业--团队项目的原型设计与开发

    一.实验目的与要求 1.掌握软件原型开发技术:  2.学习使用软件原型开发工具: 二.实验内容与步骤 任务1:针对实验六团队项目选题,采用适当的原型开发工具设计团队项目原型: 任务2:在团队博客发布博 ...

  3. Chen qiaoqiao Studio

    Welcome here! If you need any help, please contact us. Contact info Email: lovey_kids@163.com

  4. python入门(十四):面向对象(属性、方法、继承、多继承)

    1.任何东西1)属性(特征:通常可以用数据来描述)(类变量和实例变量)2)可以做一些动作(方法) 类来管理对象的数据.属性:类变量和实例变量(私有变量)方法:    1)实例方法    2)类方法   ...

  5. mac 下直接给docker容器加映射 mysql 为例

    如果你是下面这种情况,本文可能回给你一些帮助 os是Mac,docker中已有mysql容器,并且已经有数据,但是没有设置映射,想要从主机连接docker 中的mysql,以便更好的查看,增加,删除数 ...

  6. python中reshape重组数据方式

    方法numpy.reshape()是怎么进行数据重新定义shape?先生成一个随机数组 reshape成5行3列,可以看到是把(5,3)中第一行的剩余两列数据作为第二行的前两列,以此类推 reshap ...

  7. Cocos2dx开发之运行与渲染流程分析

    学习Cocos2dx,我们都知道程序是由 AppDelegate 的方法 applicationDidFinishLaunching 开始,在其中做些必要的初始化,并创建运行第一个 CCScene 即 ...

  8. 摘选改善Python程序的91个建议2

       62.metaclass stackflow          中文翻译    63.Python对象协议   https://zhuanlan.zhihu.com/p/26760180     ...

  9. ABAP开发相关事务代码

    事务代码 事务描述 事务代码 事务描述 SE37 ABAP/4函数编辑器 BAPI BAPI 浏览器 SE38 ABAP编辑器 LSMW 数据导入工具 SE39 ABAP分屏编辑器 PFCG 权限管理 ...

  10. docker 容器 详解

    docker run  ## 创建一个新容器 [root@localhost ~]# docker run --help Usage: docker run [OPTIONS] IMAGE [COMM ...