linux下PythonQt混编记录
看了很多博主经验,然后自己实验总结出来的,就不一一写出处了,非常感谢各位博主的分享经验。
一、安装Python3.6
- 安装依赖环境
# 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安装失败,暂时放弃这个
- 下载安装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运行时目录中即可.
- 编译安装
make && make install
- 建立软连接
# ln -s /usr/local/python3/bin/python3 /usr/bin/python3
如果/usr/bin下存在python3 ,先删除或修改文件名。
- 添加PATH
# cd /etc/profile.d/
# vim python3.sh
export PATH="$PATH:/usr/local/python3/bin"
:wq
# source ../profile
# echo $PATH
- 检查Python3及pip3是否正常可用
# python3 -V
# pip3 -V
二、安装pip
- 安装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
- 安装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混编记录的更多相关文章
- Linux下常用的命令记录
本文章记录我在linux系统下常用或有用的系统级命令,包括软硬件查看.修改命令,有CPU.内存.硬盘.网络.系统管理等命令.但本文不打算介绍生僻命令,也不介绍各个linux发行版下的特有命令,且以后会 ...
- linux下计划任务学习记录
0x01 计划任务简介 linux 中计划任务主要分为”循环执行”和”只执行一次”两种,分别对应的时 crond 服务 和 atd 服务: 0x02 只执行一次的计划任务 0x02.1 atd 服务说 ...
- linux下ffmpeg环境搭建记录
1.Linux下安装yasm 官网下载:http://yasm.tortall.net/Download.html tar -zvxf yasm-1.3.0.tar.gz cd yasm-1.3.0/ ...
- cmd&Linux 下使用mysql全记录
php mysql数据库常用cmd命令集 show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop ...
- Linux下ifort的安装记录
首先进入网址https://software.intel.com/en-us/qualify-for-free-software/student 下载Intel Parallel Studio XE ...
- linux下jdk简单配置记录
记录哈,搭建环境的时候,copy使用方便. vim /etc/profile export JAVA_HOME=/usr/java/jdk1.7.0_79export PATH=$JAVA_HOME/ ...
- Linux下安装MongoDB全程记录
1.下载安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.6.0.tgz 2.解压缩 [root@loca ...
- linux 下RTL8723/RTL8188调试记录(命令行)【转】
本文转载自:http://blog.h5min.cn/wuhongxin123/article/details/41820877 本文是在正确安装好wifi驱动后对系统进行的配置. 1. 配置wp ...
- Linux下gdb使用整理记录
1.创建cpp文件:vim sourcefile.cpp 2.生成可执行文件:g++ -g sourcefile.cpp -o exename ------据说是要必须加上-g参数,否则不可调试 3. ...
随机推荐
- linux 之分区和文件系统
分区类型 主分区:总共最多只能分4个 扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多4个,但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用. 逻辑分区:逻辑分区是 ...
- scrapy 爬取豆瓣互联网图书
安装scrapy conda install scrapy 生成一个scrapy项目 scrapy startproject douban settings文件 # -*- coding: utf-8 ...
- select 自匹配问题
原生js给select赋值或者vue绑定数据,会自匹配下拉选项的value或者key,从而显示对应的label或者对应的option的html eg: 原生: <select name=&quo ...
- Pandas透视表和交叉表
透视表 参数名 说明 values 待聚合的列的名称.默认聚合所有数值列 index 用于分组的列名或其他分组键,出现在结果透视表的行 columns 用于分组的列表或其他分组键,出现在结果透视表的列 ...
- docker容器跑redis
命令行配置: $ docker search redis $ docker pull docker.io/redis $ mkdir -p /redis/etc/conf /redis/lib /r ...
- ESP8266 软件实现 Delta-sigma(ΔΣ)调制器 并通过I2S接口输出编码流
一.关于Delta-sigma(ΔΣ)调制器 Delta-sigma(ΔΣ)调制器是Delta-sigma转换器的核心部件.如下所示为一个简单的一阶Delta-sigma调制器,该调制器产生一个1bi ...
- C# 木马功能的简单实现
1.首先解决开机启动木马.通过建立开机启动服务达到目的:2.伪装问题.通过c#反射性能,将正常的.net的exe文件添加监控盗传播取等其他功能,执行正常程序同时,后台悄悄释放windows服务,通过服 ...
- command not found解决方案
如果新装的系统,运行一些很正常的诸如:shutdown,fdisk的命令时,悍然提示:bash:command not found.那么 首先就要考虑root 的$PATH里是否已经包含了这些环境变量 ...
- Analysis Services(SSAS) 性能优化
1.聚合选项中添加聚合,以空间换时间提升性能. 如下图: 性能提升百分比越高,聚合数越高,生成的Cube越大,这就是以空间换时间. 2.修改SSAS服务器上的线程池配置选项.提升并发数. 通过X:\P ...
- OJ题解记录计划
容错声明: ①题目选自https://acm.ecnu.edu.cn/,不再检查题目删改情况 ②所有代码仅代表个人AC提交,不保证解法无误 E0001 A+B Problem First AC: 2 ...