PyCharm下配置PyQt,TensorFlow等环境

该博客亦是对博客《在ROS中利用PyQt写GUI程序》的一个扩展。

目录

一、软件安装

 二、环境配置

三、安装其他库

 四、PyQt在PyCharm中的搭建


 

一、软件安装

Pycharm是python比较好的IDE。PyCharm的下载为https://www.jetbrains.com/pycharm/download,可选择community版本,免费使用,安装过程也非常简单。

Python的安装,直接在官网https://www.python.org/downloads/下载即可。目前最新的版本为3.7系列。建议下载可执行程序进行安装,直接按默认选项装,pip一定要勾选上。建议python放在系统环境变量中,这样打开cmd输入python回车可查看python是否安装成功及其对应版本。。

 二、环境配置

双击安装好的pycharm,第一次打开时会要求选择python解释器,一般默认是加载虚拟环境,这个不建议使用。直接选择刚刚装入系统的解释器,如下。

新建一个工程,这样就可以导入python的一些库,如math,sys,socket等。

三、安装其他库

python主要有两个包管理器系统,一个是conda(这个需要安装anaconda),一个是pip。python的包管理器系统实在太强大太好用了,简直有点爱不释手,详见https://pypi.org/project/pip/

pip是一种脚本语言,其运行目录在所安装python环境的Scripts文件夹下。

pip的使用方法如下,一般是使用install指令。

比如要安装PyQt5(这是一种基于Qt库的python封装,适合用python做一些GUI程序) ,直接在cmd中输入

pip install PyQt5

后回车就开始安装,详见https://pypi.org/project/PyQt5。可能第一次不会安装成功,原因在于会依赖一些其他库,会优先安装其他库。如果失败,再执行一遍该指令即可。

同理,TensorFlow是安装也是这样,

pip install tensorflow

详见https://pypi.org/project/tensorflow。也要安装几遍才成功,原因在于要依赖numpy等第三方库。

为验证TensorFlow是否安装成功,可在python IDLE中写一个简单的程序验证一下:

import tensorflow as tf
import numpy as np
# 引入图表
import matplotlib.pyplot as plt
 
# 没有激励就是线性
def add_layer(inputs,in_size,out_size,activation_function=None):
	Weights = tf.Variable(tf.random_normal([in_size,out_size]))# 随机生成一个矩阵,有in_size行数和out_size列数
	biases = tf.Variable(tf.zeros([1,out_size])+0.1)# 这个是个一维数组,行数只有1,列数为out_size,这里+0.1表示他每个值都是0.1
	Wx_plus_b = tf.matmul(inputs,Weights)+biases# 矩阵相乘再加biases
	if activation_function  is None:
		outputs = Wx_plus_b# 如果没有激励,则直接就是这个线性函数
	else:
		outputs = activation_function(Wx_plus_b)# 如果有激励,则把线性函数传进激励函数(进行过滤或缩放等操作)
	return outputs
 
# 这个x_data是这样的:产生300个[x],其值从-1开始到1不等距分布
# [-0.001234234]
# [-0.002453244]
# .
# .
# .
# [0.932423425]
# [0.993242424]
x_data = np.linspace(-1,1,300)[:,np.newaxis]
 
# 噪点,结构与x_data类似有负有正
# 以0为中点,方差为0.05波动
# 这个数与0之间的差值的平方值,最大为0.05,即这个数的平方不能大于0.05
 
noise = np.random.normal(0,0.05,x_data.shape)
 
# 令y_data等于x_data的二次方,再减去0.5,然后加上一个随机噪声,这样x跟y就不是完全线性相关的
 
y_data = np.square(x_data) - 0.5 + noise
 
xs = tf.placeholder(tf.float32,[None,1])
ys = tf.placeholder(tf.float32,[None,1])
 
# 定义隐藏层。输入神经元1个,隐藏层神经元10个,激励函数:非线性函数
#(inputs,in_size,out_size,activation_function=None)
#(输入数据,输入参数个数,输出参数根数,激励函数)
l1 = add_layer(xs,1,10,activation_function = tf.nn.relu)
 
# 定义输出层。l1,神经元10个,输出1
# 输出层,就是预测值
predition = add_layer(l1,10,1,activation_function = None)
 
# tf.square(ys - predition) (对每个例子)实际值减预测值的平方
# 对刚才的平方,所有例子求和
# 对刚才求的和求一个平均值
 
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - predition),
	reduction_indices = [1]))
# 梯度下降法优化器
# 参数是学习效率
# 优化器的目标是最小化误差
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
 
init = tf.initialize_all_variables()
 
sess = tf.Session()
sess.run(init)
 
# 在此显示图形
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(x_data,y_data)# x和对应的y
plt.ion()#有这个语句就不阻塞会继续往下走
plt.show()
 
for i in range(1000):
	sess.run(train_step,feed_dict = {xs:x_data,ys:y_data})
	if i% 50:
		#print(sess.run(loss,feed_dict = {xs:x_data,ys:y_data}))
		try:
			ax.lines.remove(lines[0])
		except Exception:
			pass
		prediction_value = sess.run(predition,feed_dict={xs:x_data})
		lines  = ax.plot(x_data,prediction_value,'r-',lw=5)#红线是预测的线
		plt.pause(0.1)#暂停0.1秒
# 如果打印的loss越来越小,说明是收敛的,训练有效
# 检验发现,10000次训练不会比1000此训练loss更小,说明不收敛(不是无限收敛)

然后运行,会出现以下界面。

这样我们就可以研究一些机器学习算法了。

用pip安装的库都在Python37\Lib\site-packages中可以找到。

 四、PyQt在PyCharm中的搭建

做UI界面设计,还需要安装pyqt5-tools工具,实际是Qt Designer等一些辅助工具,以及将Qt的ui,qrc等文件转换为python描述。

打开pycharm,在Settings/Tools中添加External Tools,主要有三个,QtDesigner用于设计界面,pyuic用于将.ui文件转换为python描述,pyrcc用于将.qrc文件转换为python描述。其中熟悉Qt的朋友应该对QtDesigner很了解,而pyuic和pyrcc则在Python37\Scripts文件夹下,也是用脚本去操作。

pyrcc的用法如下:

pyuic的用法如下:

 一般-o指令即可,用于将生成的代码输出到文件。

因此,在pycharm中设置如下:

  • QtDesigner

  •  pyuic,其中Arguments中输入$FileDir$\$FileName$ -o $FileDir$\$FileNameWithoutExtension$.py,Working directory中填入$FileDir$,可以在旁边的插入宏中找到一些关键词。

  •  pyrcc,其中Arguments中输入$FileDir$\$FileName$ -o $FileDir$\$FileNameWithoutExtension$_rc.py,Working directory中填入$FileDir$。

 填好后保存,就可以开始编写PyQt程序。 

此时,新建一个工程测试一下PyQt库。用QtDesinger编写一个简单界面,然后右键选择External Tools中pyuic,此时会生成一个同名的.py文件;新建一个qrc文件,输入一些图片等信息,然后右键选择External Tools中pyrcc,会生成一个带_rc.py的文件。工程目录如下图所示:

其中main.py的代码如下:

from PyQt5 import QtWidgets
import sys
from test import *
from rqc_rc import *
import numpy as np
from matplotlib import pyplot as plt

i = 1

x = np.arange(-5, 5, 0.1)
y = x*x+5
plt.title("python plot demo")
plt.xlabel("x axis")
plt.ylabel("y axis")
plt.plot(x, y, '-*')
plt.show()


class TestUi(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(TestUi, self).__init__(parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.ui.pushButton.pressed.connect(self.slot_btn_1)

    def slot_btn_1(self):
        global i
        print(i)
        self.ui.lineEdit.setText(str(i))
        i = i + 1


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    widget = TestUi()
    widget.show()
    sys.exit(app.exec())

其中matplotlib挺类似于matlab的,纯粹测试用,可以不用理会。

最后程序的运行效果如下:

Enjoy!

猜你喜欢

转载自blog.csdn.net/u014610460/article/details/101108549
今日推荐