最近在看强化学习,一些案例需要用gym库,这两天终于装好了。主要参考CSDN上一篇博客和哔哩哔哩上一个视频,两者各有一些需改进之处。
一、前言
python Anaconda Pycharm相信大家肯定在用了,python主要是一个解释器的作用,其自带的编辑器不好用;Pycharm主要就是编辑,自动补全很好用对不对,但是没有Python解释器它是没法编译的;Anaconda主要是一个管理工具,在后续不同的案例中,所需的环境不同,有的可能还要Python2,用Anaconda可以创建很多个不同的环境,各不影响。另外Anaconda也自带Python解释器,Pycharm中可以使用它的解释器,装了Anaconda其实就不用单独装python了。综上,推荐安装anaconda&Pycharm。
此外,有些同学肯定也装了Python解释器,那么在使用gym库时可能会碰到这样的问题:按照官网pip install gym 安装好以后,能在Python编辑器中运行演示案例,但是在Pycharm中就不行。其实,这是因为Pycharm此时的解释器无法读取到gym库滴,需要用Anaconda配置。
PS:室友说Pycharm可以直接装gym,但是帮我弄就不行,也不知道为啥。
二、Anaconda Pycharm安装
网上教程很多,这里不赘述。关于Anaconda的安装,指出两点:
1、有的博主说安装在C盘会出问题,有的说在D盘会出问题,我也不知道谁是对的。这里我安装在D盘,注意文件夹为全英文、无空格
2、关于是否添加到路径,也是分两派,这里我就直接添加了
第一个选项打勾
三、Anaconda配置环境
重点来了,首先声明一点,有科学上网工具的同学请确保关闭,否则后面装gym包会报错。我自作聪明,不添加镜像源,开着工具下载gym,总是失败T-T
用管理员模式打开CMD,输入conda info,会出现类似下图,说明anaconda安装成功了。
当然,你的信息没我多,因为我这是安装好包和镜像源了的。
下面的操作都是在cmd下
1、设置镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --set show_channel_urls yes
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
原博有两处错误,会导致后面装包的时候找不到,我给改正了。顺便说一句,经常会用到镜像的包,建议同学们不要直接就复制粘贴输入命令,先打开这个网址试试能不能连。
输完以后,再次输入conda info,注意看channels URLs一栏,就多了这么几个:
2、创建gym环境
名字随便,取自己看着舒服的就行,一个python环境,一个gym环境
conda create -n python383 python=3.8.3
conda create -n gym python=3.8.3
中间的 python383 gym是环境名
回车以后,会弹出y/n,当然选择y啦
两个都装好以后,输入
conda env list
这里有4个环境,base是安装anaconda完成后就有的,python383、gym是刚刚创建的(忽略modle_free)
3.安装gym
重点中的重点,输入activate gym
,这时候就进入刚刚创建的gym环境了,但是只是名字叫gym,包还没装呢~
你会发现C:\Windows\system32前面多了(gym),变成(gym)C:\Windows\system32,就是这样,然后安装一些组件
conda install pandas
conda install tensorflow
pip3 install gym matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
这时候应该不会有报错警告,进度条是#########,最后会显示 done,就OK了。
如果清华源不好用的话,试下豆瓣吧,真香~
https://pypi.douban.com/simple/
四、Pycharm中配置解释器
先创建一个项目,打开解释器设置
点开选择Add
选择你安装anaconda的文件夹,envs中有我们刚刚创建的gym环境
输入测试代码,
import gym
env = gym.make( 'CartPole-v0' )
for i_episode in range( 20 ):
state = env.reset()
for t in range( 1000 ):
env.render()
print( state )
action = env.action_space.sample()
state, reward, done, _ = env.step( action )
if done:
print('Episode #%d finished after %d timesteps' % (i_episode, t))
break
运行,会弹出一个窗口,下面有一堆矩阵,就大功告成了~~~
强化学习还是比较难的,有同方向的可以交流交流[期待.jpg]
主要参考资料:
https://blog.csdn.net/qq_33548747/article/details/102806136
https://www.bilibili.com/video/BV1Ht4y197DG?t=255