• WSL Ubuntu + Docker Desktop搭建python环境


    WSL Ubuntu + Docker Desktop搭建python环境

    一、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、安装步骤

    具体步骤是:

    1. 在程序与功能中,开启 linux子系统 和 虚拟机平台,无需开启hyperV。 参考Windows 10安装WSL 2

    2. 到windows应用商店中下载并安装ubuntu 20.04 LTS。

    3. 更新WSL内核组件为WSL2,并将ubuntu切换到WSL2模式。参考WSL2更新内核组件wsl1与wsl2切换

      wsl --set-version Ubuntu 2
      
      • 1
    4. 安装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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    windows控制台切换到ubuntu控制台

    wsl ~ -d Ubuntu
    
    • 1

    3、可能存在问题

    Note

    • 如果切换到WSL2后,ubuntu启动不起来,报4294967295 (0xffffffff)错误,参考https://github.com/microsoft/WSL/issues/5092,即使用如下命令(如果还不能解决,就切换到WSL1吧)

      netsh winsock reset
      
      • 1
    • 测试一下网络能否ping通,但是报错了

      ping: www.baidu.com: Temporary failure in name resolution
      
      • 1

    ​ 解决方法参考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
    
    • 1

    进入指定文件夹后,

    bash Anaconda3-2021.11-Linux-x86_64.sh
    
    • 1

    配置conda文件路径

    echo 'export PATH="/home/wangxiaoxi/anaconda3/bin"' >> ~/.bashrc
    source ~/.bashrc
    
    #上面命令可能会把WSL文件弄坏,导致ls,cd基本命令无法使用,使用如下命令修复
    export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    查看conda是否配置成功

    conda -V
    
    • 1

    存在问题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/
    
    • 1

    解决方法参考https://github.com/microsoft/WSL/issues/4020https://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
    
    • 1
    • 2
    • 3
    • 4

    接着设置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
    
    • 1
    • 2
    • 3
    • 4
    1. 在Docker Desktop图标上,右键选择[Quit Docker Desktop],退出Docker。

    2. 命令行执行 wsl --list -v 查看状态STATE,是否已停止Stopped。

    3. 命令行执行 wsl --shutdown ,关闭WSL。

    4. 从 wsl 把镜像 \data\ext4.vhdx 导出到压缩文件 docker-desktop-data.tar,导出路径应提前创建好,否则导出到不存在的路径会报错。命令行执行:

      wsl --export docker-desktop-data D:\programSoftware\docker\docker_desktop_data\docker-desktop-data.tar
      
      • 1

      同理,导出把程序 \distro\ext4.vhdx 导出到压缩文件 docker-desktop.tar,命令行执行

      wsl --export docker-desktop D:\programSoftware\docker\docker_desktop\docker-desktop.tar
      
      • 1
    5. 命令行执行 wsl --unregister docker-desktop-data注销原来的 Docker 镜像。同理,执行 wsl --unregister docker-desktop

    6. 从tar文件,将导出的 Docker 镜像再导入回wsl,并设置挂载目录,命令行导入格式:

      wsl --import <Distribution Name> <InstallLocation> <FileName>
      
      • 1

      如:

      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
      
      • 1
      • 2
    7. 将docker-desktop-data,docker-desktop设置为WSL2

      wsl --set-version docker-desktop 2
      wsl --set-version docker-desktop-data 2
      
      • 1
      • 2
    8. 重启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"
      ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4)实例化anaconda容器

    在完成好WSL和Docker Desktop安装之后,基于深度学习的anaconda环境配置步骤如下:

    1. 实例化anaconda容器

      docker run -it --name="anaconda" -p 8888:8888 continuumio/anaconda3 /bin/bash
      
      • 1

      如果退出了,可以重启anaconda容器

      #重启
      docker start anaconda
      docker exec -it anaconda /bin/bash
      
      • 1
      • 2
      • 3
    2. base环境下配置wenet环境(不要创建虚拟环境,方便之后打包成镜像,供pycharm使用

      将WSL中的wenet项目拷贝到docker容器中(假设在WSL的/home/usr下有wenet项目)

      docker cp /home/usr/wenet/requirements.txt 9cf7b3c196f3:/home/  #9cf7b3c196f3为anaconda容器id
      
      • 1

      进入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
      
      • 1
      • 2
  • 相关阅读:
    防火墙ensp实验
    ACMUG活动回顾 | MySQL创始人见面会&技术分享会圆满结束
    Python3中的算术运算符
    美联储“鹰派”态势已经见顶?美国7月CPI同比8.5%
    Nacos的使用记录
    旷视科技-python开发,python数据清理和数据清洗面试题【杭州多测师_王sir】【杭州多测师】...
    OSG 添加文字(显示中英文)
    Redis源码之SDS简单动态字符串
    zookeeper未授权漏洞复现及处理
    HarmonyOS开发实战(黑马健康系列一:欢迎页)
  • 原文地址:https://blog.csdn.net/qq_33934427/article/details/125599594