PyCharm下配置PyQt,TensorFlow等环境
Posted lwlv
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyCharm下配置PyQt,TensorFlow等环境相关的知识,希望对你有一定的参考价值。
该博客亦是对博客《在ROS中利用PyQt写GUI程序》的一个扩展。
目录
一、软件安装
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!
以上是关于PyCharm下配置PyQt,TensorFlow等环境的主要内容,如果未能解决你的问题,请参考以下文章
Anaconda+pycharm(在pytorch环境下)安装PyQt5及环境配置