起因:在吴恩达机器学习课程中,强化学习部分的课后任务——Lunar Lander,光是跑动代码就花了很多的功夫。因此希望把各处搜集到的资料汇总起来。
ps.可能有不全的地方,建议在过程中遇到任何Error提示多在社区查资料,基本上都有大佬给出了对应的解决方案。
目录
2、启用适用于 Linux 的 Windows 子系统(“设置”→搜索栏搜索“启用或关闭”→找到启用或关闭Windows功能→勾选“适用于Linux的Windows子系统”)
4、从Microsoft Store下载Ubuntu(版本很多,我下载的是18.04,20.04也可)
3、如何将Windows中的代码放入wsl下的jupyter中
明确解决思路(分析过程,可略)
第一步import中就遇到了困难,所需的pyvirtualdisplay库在Windows上难以使用。因为pyvirtualdisplay是为了在无头服务器或无图形界面的Linux环境中模拟显示而设计的,所以在Windows上可能不会像在Linux上那样工作。
因此,我们需要借助Linux系统。如果和我一样电脑使用的是Windows系统,可以使用Windows Subsystem for Linux (WSL),相当于在Windows上搭建了一个Linux的子系统。
Windows Subsystem for Linux (WSL) 是一个为Windows 10和Windows 11提供的功能,它允许你直接在Windows环境中运行Linux命令和应用程序。WSL提供了一个轻量级的Linux内核,让你可以在Windows上体验类似Linux的命令行环境,而无需启动完整的虚拟机或双启动。
大致解决思路如下:
- 安装wsl,使我们在Windows上也可以使用Linux环境。
- 根据代码需要,安装各种库。(库非常多,注意保证足够的存储空间。一番操作下来发现C盘的存储空间用掉了10GB左右,打算之后想办法看能否转移到其他盘)
一、安装wsl
1、打开开发者模式(“设置”→搜索栏输入“开发者”)
2、启用适用于 Linux 的 Windows 子系统(“设置”→搜索栏搜索“启用或关闭”→找到启用或关闭Windows功能→勾选“适用于Linux的Windows子系统”)
3、重启电脑,使操作生效
4、从Microsoft Store下载Ubuntu(版本很多,我下载的是18.04,20.04也可)
5、打开Ubuntu
弹出黑窗,等待安装,后面会提示输入新的用户名和密码。
(注:Linux系统中密码是非明文显示的,即无法看到自己输入了什么,连“*”都没有,因此看不到密码不要慌张,输完回车确认即可。且密码是后面使用root权限的凭证,要记好)
创建成功会显示如下:
ps.如果是打开Ubuntu一开始显示是root用户(我用20.04版本有出现这种情况),强烈建议开一个新用户,以免不小心修改了某些重要的系统文件。创建新用户的操作如下:
#在ubuntu中创建新用户
- 输入命令:sudo adduser 自定义新用户名
- 按照提示输入相关信息,包括密码、用户全名、电话号码等。你可以选择输入这些信息,也可以直接按回车键跳过。
#赋与该用户root权限(使用以下命令将新用户添加到sudo组,往后需要使用root权限只需在命令前加sudo 并输入用户密码 即可)
- 输入命令:sudo usermod -aG sudo 新用户名
#切换新用户
- 输入命令:su - 新用户名
完成!注意:之后的操作都在wsl上进行(后文中若有“在终端”的表示,也是指同样的意思)。
二、安装miniconda
Miniconda是Anaconda的一个精简版本,它允许用户轻松地安装Python环境和conda包管理器。
就一般而言,miniconda已经足够使用,因此我们选择安装miniconda。优势:轻量,安装快;弊端在于一些包需要自行安装。
1、在Miniconda官网找到下载网址
Miniconda — Anaconda documentation
找到合适的版本(注意是Linux,不要错下成Windows的了)→右键→复制链接
2、打开wsl,输入下载命令
wegt XXX(XXX:复制的链接(在wsl中,鼠标单击右键即可粘贴))
3、查看刚下载的miniconda文件
输入以下命令,复制结果:
ls
4、输入安装命令
bash XXX(XXX:为第三步复制的结果,即刚刚下载的文件名,格式为.sh)
之后阅读协议(按回车,注意不要按太快,因为阅读完成后需要输入yes)
然后会让你选择miniconda的安装位置:
- 按ENTER,下载到默认位置(一般选默认,所以再按一下回车就好)
- 按CTRL-C,放弃安装
- 或者指定其他的安装位置
显示以下即为安装miniconda成功:
通常需要关闭终端再进入才可生效。
退出再进入wsl中后,可输入conda检查是否可用:(注意到此时用户名前面出现了一个base)
三、换源
由于Miniconda 默认配置的软件包索引(源)通常是国外的服务器,下载一些库耗时会非常长。因此我们将默认源替换为国内的镜像源。
镜像源:清华大学开源软件镜像站、中国科技大学开源软件镜像站、阿里云等等
1、备份默认源。命令如下:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
命令解释:需添加sudo使用root权限,cp为复制, /etc/apt/sources.list为默认源的位置,/etc/apt/sources.list.old为复制后的位置。
2、编辑source.list文件。命令和后续操作如下:
- 输入命令:sudo vi /etc/apt/sources.list
- 敲键盘上的 「i」键进入编辑模式(左下角变为[INSERT])
- 删除里面所有内容
- 复制粘贴镜像源(鼠标单击右键粘贴)(我用的是阿里云的,来自参考文章内保姆级教程-启用Linux子系统(WSL)并安装jupyter notebook - 知乎 (zhihu.com))
以下为阿里云的镜像源:
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
完成后:
完成上述操作后:
- 按「esc」退出编辑模式,回到命令模式。
- 输入 :wq 然后按
Enter
键,关闭编辑器。(注意: :wq 必须要手打,不能复制粘贴)
3、更新软件源。命令行如下:
sudo apt-get update
sudo apt-get upgrade
四、搭建虚拟环境
虚拟环境可以被视为一个独立的空间,在这个空间中进行的操作(例如安装各种库或更新Python包)不会影响到其他虚拟环境或全局环境。因此在安装各种库前,我们先搭建一个专属于Lunar Lander的环境:
- 查询python的版本:python --version
- 新创建一个虚拟环境:conda create --name XXX(自定义环境名称) python=XXX(前面查询到的版本号)
- 激活环境XXX:conda activate XXX(退出环境使用:conda deactivate)
完成!搭建虚拟环境前面的步骤都是在盖房子,后面装各种库可以视为是装修房子。
注意:之后的操作都在 虚拟环境XXX 中进行!!!(即先激活环境,再装各种库)
五、 安装jupyter notebook
1、安装jupyter notebook
- 安装jupyter notebook:conda install jupyter notebook
- 为环境添加内核:python -m ipykernel install --user
(可选)安装jupyter插件功能:conda install -c conda-forge jupyter_contrib_nbextensions
(可选)安装jupyter主题功能:conda install jupyterthemes
conda install -c conda-forge jupyter_contrib_nbextensions若出现错误,可参考:【jupyter notebook】中插件 nbextensions 安装失败分析与解决方法_modulenotfounderror: no module named 'notebook.nbe-CSDN博客
2、测试一下能否打开jupyter notebook
输入命令:jupyter notebook
如果发现闪过红字然后黑窗的情况,不要慌,这是因为未指定浏览器导致的。此时有两种方法:
- 方法一(一劳永逸):指定浏览器(具体操作可观看p3-jupyternotebook安装_哔哩哔哩_bilibili,位置坐标:2:12)
- 方法二(立即见效):按CTRL-C退出后,能看到一行HTTP网址,将此网址复制到浏览器即可。
ps.若出现Password or token的情况,可参考:解决jupyter notebook启动需要密码问题终极办法_jupyter notebook要求输入密码-CSDN博客
使用终极办法解决后:
3、如何将Windows中的代码放入wsl下的jupyter中
成功打开jupyter notebook后,却发现里面除了miniconda3外什么也没有。因为我们想要运行的Lunar Lander代码在Windows中,而不在wsl中,应该如何处理?
按照路径,找到自己的用户名文件夹,将学习资料整个丢到这个文件夹下即可
六、安装Lunar Lander所需要的各种库
罗列一下印象中装了的库,可能不全。主要看运行代码后的错误提示,缺了什么库就装什么库。
conda install numpy
conda install tensorflow
conda install pandas
pip install gym
pip install pyvirtualdisplay
pip install ipympl
conda install imageio
conda install matplotlib
conda install statsmodels
pip install ipympl
pip install box2d
pip install pygame
下面这两行好像是为了解决最后视频无法生成的问题的:
python310 -m pip install swig
pip install imageio[ffmpeg]
conda和pip都可以下载,不过有些库不在conda中,只能用pip下载。
到此全部搞定!
参考资料:
从搭建自己的科研平台开始(WSL+JupyterNotebook)_哔哩哔哩_bilibili
保姆级教程-启用Linux子系统(WSL)并安装jupyter notebook - 知乎 (zhihu.com)
解决jupyter notebook启动需要密码问题终极办法_jupyter notebook要求输入密码-CSDN博客
强化学习使用gym库遇到的问题(持续更新......)_gym.error.resetneeded: cannot call `env.render()` -CSDN博客
强化学习demo出现的问题_env.render()无画面-CSDN博客
cmd 运行 jupyter notebook 出错_typeerror: warn() missing 1 required keyword-only -CSDN博客