作者:不会游泳的鱼 | 来源:互联网 | 2023-09-01 13:18
WSL Ubuntu + Docker Desktop搭建python环境
文章目录 WSL Ubuntu + Docker Desktop搭建python环境 一、Window10更新WSL2内核并安装Ubuntu 1、安装步骤 2、迁移WSL ubuntu系统存储位置 3、可能存在问题 二、WSL Ubuntu搭建python环境 1、直接在WSL中安装anaconda(pip无法使用,github上也反馈过了,暂时找不到解决方案,此方案不建议使用) 2、建议安装docker,在docker下安装anaconda 1)安装Docker Desktop 2)Docker Desktop更改镜像存储位置(wsl命令,设置挂载目录) 3)Docker Desktop修改docker源路径 4)实例化anaconda容器 一、Window10更新WSL2内核并安装Ubuntu 什么是WSL? Windows Subsystem for Linux,适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生虚拟机开销。
什么是WSL2? WSL 2 是 WSL 中体系结构的新版本,它更改 Linux 发行版与 Windows 交互的方式。 WSL 2 的主要目标是提高文件系统性能并增加系统调用的完全兼容性。 每个 Linux 发行版都可以作为 WSL 1 或 WSL 2 发行版运行,并可随时进行切换 。 WSL 2 是底层体系结构的主要功能,它使用虚拟化技术和 Linux 内核来实现其新功能。
1、安装步骤 具体步骤 是:
在程序与功能中,开启 linux子系统 和 虚拟机平台,无需开启hyperV。 参考Windows 10安装WSL 2
到windows应用商店中下载并安装ubuntu 20.04 LTS。
更新WSL内核组件为WSL2,并将ubuntu切换到WSL2模式。参考WSL2更新内核组件, wsl1与wsl2切换
wsl --set-version Ubuntu 2
安装window terminal,方便同时打开多个控制台窗口。
2、迁移WSL ubuntu系统存储位置 迁移C盘的ubuntu系统到D盘中,并在D盘中运行ubuntu2004,注意卸载掉原来的ubuntu20.04LTS (点击左下角windows图标,找到ubuntu20.04卸载即可)。参考 【WSL2】迁移Windows虚拟子系统(Ubuntu) , win10 wsl2修改默认安装目录到其他盘
注意先进入迁移文件夹下,再使用ubuntu2004 config --default-user USERNAME
安装ubuntu系统到到迁移文件夹
运行如下命令查看迁移盘的ubuntu子系统,并切换到WSL2模式
wsl -l -v NAME STATE VERSION * Ubuntu Running 1 wsl --set-version Ubuntu 2
windows控制台切换到ubuntu控制台
wsl ~ -d Ubuntu
3、可能存在问题 Note :
解决方法参考https://github.com/microsoft/WSL/issues/5256,如果解决不了就切换到WSL1吧,等到需要用到GPU资源,再切换到WSL2吧
二、WSL Ubuntu搭建python环境 Note :
使用WSL有以下两点建议:
WSL ubuntu20.04版本和原生的ubuntu20.04版本是不同的 ,所以在使用时难免会出现在同样操作下,WSL ubuntu20.04和原生ubuntu20.04出错信息不同的问题。建议不要在WSL ubuntu子系统中直接安装anaconda ,后面可能会出现pip无法使用 的问题。建议先在Windows中安装docker desktop,再安装anaconda,即建议使用WSL + docker解决方案 ,不要直接在WSL中直接安装anaconda 1、直接在WSL中安装anaconda(pip无法使用,github上也反馈过了,暂时找不到解决方案,此方案不建议使用) 安装anaconda:清华anaconda镜像
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.11-Linux-x86_64.sh
进入指定文件夹后,
bash Anaconda3-2021.11-Linux-x86_64.sh
配置conda文件路径
echo 'export PATH="/home/wangxiaoxi/anaconda3/bin"' >> ~/.bashrcsource ~/.bashrcexport PATH = /usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin
查看conda是否配置成功
conda -V
修改conda源,参考 ubuntu更换conda源 修改apt源,参考 Ubuntu 更改apt 源 Windows10本地磁盘挂载到ubuntu的/mnt文件夹下: 将Windows系统中文件传入WSL子系统中 存在问题1 :WSL ubuntu中无法使用pip
WARNING: Retrying ( Retry( total= 4 , connect = None, read = None, redirect = None, status = None)) after connection broken by 'NewConnectionError(' < pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f6e6eea04c0 > : Failed to establish a new connection: [ Errno -2] Name or service not known')' : /simple/numpy/
解决方法参考https://github.com/microsoft/WSL/issues/4020,https://github.com/MicrosoftDocs/windows-uwp/issues/2679,发现还是无法解决。
2、建议安装docker,在docker下安装anaconda Note :
安装Docker Desktop ,利用docker安装anaconda镜像(镜像中包含ubuntu文件系统,建议不要在anaconda中创建虚拟环境,直接在base下安装,之后在将anaconda运行时容器打包成镜像时,pycharm才能识别镜像中的base环境 ,此方案建议使用)
1)安装Docker Desktop 使用如下命令在WSL ubuntu中安装docker时,提示先安装Docker Desktop
Docker Desktop安装步骤参考:Docker Desktop for Windows 安装步骤 (这里需要开启HyperV)
Docker Desktop默认安装在C盘,如果要更改安装路径,可参考: docker desktop 更改安装目录,这里就不修改了。
Docker Desktop安装成功后,先将ubuntu切换到WSL2:
NAME STATE VERSION * Ubuntu Stopped 2 docker-desktop Running 2 docker-desktop-data Running 2
接着设置Docker Desktop,将docker集成到ubuntu中,这时ubuntu就可以直接使用docker命令了,无需安装sudo apt install docker
。
2)Docker Desktop更改镜像存储位置(wsl命令,设置挂载目录) 参考 Docker Desktop更改镜像存储位置
Note :
Docker Desktop修改镜像存储位置的方法 和 ubuntu修改存储位置相同,都要使用wsl命令 。
Docker Desktop 通过WSL2启动,会自动创建2个子系统,分别对应2个 vhdx 硬盘映像文件:
NAME STATE VERSION * Ubuntu Stopped 2 docker-desktop Running 2 docker-desktop-data Running 2
在Docker Desktop图标上,右键选择[Quit Docker Desktop],退出Docker。
命令行执行 wsl --list -v
查看状态STATE,是否已停止Stopped。
命令行执行 wsl --shutdown
,关闭WSL。
从 wsl 把镜像 \data\ext4.vhdx 导出到压缩文件 docker-desktop-data.tar,导出路径应提前创建好,否则导出到不存在的路径会报错。命令行执行:
wsl --export docker-desktop-data D:\ programSoftware\ docker\ docker_desktop_data\ docker-desktop-data.tar
同理,导出把程序 \distro\ext4.vhdx 导出到压缩文件 docker-desktop.tar,命令行执行
wsl --export docker-desktop D:\ programSoftware\ docker\ docker_desktop\ docker-desktop.tar
命令行执行 wsl --unregister docker-desktop-data
,注销原来的 Docker 镜像 。同理,执行 wsl --unregister docker-desktop
。
从tar文件,将导出的 Docker 镜像再导入回wsl,并设置挂载目录 ,命令行导入格式:
wsl --import < Distribution Name> < InstallLocation> < FileName>
如:
wsl --import docker-desktop-data D:\ programSoftware\ docker\ wsl\ data\ D:\ programSoftware\ docker\ docker_desktop_data\ docker-desktop-data.tar wsl --import docker-desktop D:\ programSoftware\ docker\ wsl\ distro\ D:\ programSoftware\ docker\ docker_desktop\ docker-desktop.tar
将docker-desktop-data,docker-desktop设置为WSL2
wsl --set-version docker-desktop 2 wsl --set-version docker-desktop-data 2
重启windows系统 ,重新启动 Docker Desktop 完成。
3)Docker Desktop修改docker源路径
{ "debug" : true, "experimental" : false, "registry-mirrors" : [ "https://docker.mirrors.ustc.edu.cn" , "http://hub-mirror.c.163.com" ] }
4)实例化anaconda容器 在完成好WSL和Docker Desktop安装之后,基于深度学习的anaconda环境配置步骤如下:
实例化anaconda容器
docker run -it --name= "anaconda" -p 8888 :8888 continuumio/anaconda3 /bin/bash
如果退出了,可以重启anaconda容器
docker start anacondadocker exec -it anaconda /bin/bash
在base环境 下配置wenet环境(不要创建虚拟环境,方便之后打包成镜像,供pycharm使用 )
将WSL中的wenet项目拷贝到docker容器中(假设在WSL的/home/usr
下有wenet项目)
docker cp /home/usr/wenet/requirements.txt 9cf7b3c196f3:/home/
进入anaconda容器内,在/home/
使用pip安装所有包(conda源修改参考 ubuntu更换conda源 )
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple conda install pytorch = 1.10 .0 torchvision torchaudio = 0.10 .0 cudatoolkit = 11.1 -c pytorch -c conda-forge