WSL2的安装与配置(创建Anaconda虚拟环境、更新软件包、安装PyTorch、VSCode)
1. WSL2 安装
-
以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”),然后输入以下命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart -
以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart -
❗️重新启动计算机(必须)
-
下载内核并安装: 适用于 x64 计算机的 WSL2 Linux 内核更新包
-
打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本
wsl --set-default-version 2 -
打开 Microsoft Store,并下载喜欢的 Linux 分发版。
- Ubuntu 18.04 LTS
- Ubuntu 20.04 LTS
- Ubuntu 22.04 LTS
- Debian GNU/Linux
- Fedora Remix for WSL
-
安装完成后在 Microsoft Store 打开安装的系统,首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。
-
然后,需要为 Linux 分发版创建用户帐户和密码。
-
之后在 cmd 或 Powershell 中输入 wsl 即可打开 WSL(直接 Windows + R,输入
wsl即可运行 WSL2)。
2. 更改 WSL 所在路径
安装完 WSL 后,默认是在 C 盘下的,一般来说系统盘的容量通常来说是有限的,需要更改安装目录。
- 查看 WSL 的运行状态:
wsl -l -v - 确保 WSL 处于关闭状态(Stopped),如果是 Running,则需要关闭:
之后再次查询 WSL 状态wsl --shutdown - 导出当前的 Linux 系统镜像:
之后会在 F 盘中有一个大小为 1.2G 的--export Ubuntu-20.04 f:\image_ubuntu20.04.tarimage_ubuntu20.04.tar文件 - 移除之前注册的 WSL:
wsl --unregister Ubuntu-20.04 - 再次输入查看 WSL 的运行状态:
wsl -l -v
这样说明我们取消注册成功了适用于 Linux 的 Windows 子系统没有已安装的分发版。 可以通过访问 Microsoft Store 来安装分发版: https://aka.ms/wslstore - 我们重新注册 WSL:
wsl --import Ubuntu-20.04 f:\WSL-Ubuntu-20.04 f:\image_ubuntu20.04.tar - 重新查看 WSL 状态:
wsl -l -v
此时,我们的 WSL 就已经移动完成了!NAME STATE VERSION * Ubuntu-20.04 Stopped 2
注意:
- 移动完成后不需要重新设置密码了
image_ubuntu20.04.tar这个文件可以删除掉了WSL-Ubuntu-20.04/这个文件夹就是 WSL2 的系统盘,不要删除!
3. WSL2 首次配置
3.1 更新软件包
安装完 WSL2 之后,我们就可以理解为它就是一个全新的系统,所以我们首先需要更新软件包:
sudo apt update
3.2 安装 Anaconda
-
下载安装包
cd wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh -
安装
sh Anaconda3-2023.09-0-Linux-x86_64.sh -
打开环境变量
cd notepad.exe ~/.bashrc -
设置环境变量
# 添加 Anaconda 环境变量 export PATH="/home/WSL用户名/anaconda3/bin:$PATH" -
设置快捷键
# 设置快捷键(可选) alias act='conda activate' alias deact='conda deactivate' -
更新环境变量
source ~/.bashrc -
此时在 bash 中输入:
conda --version得到下面的结果:
conda 23.7.4此时,Anaconda 就已经安装好了!
Tips:
- 嫌弃
wget下载慢的话🤪,可以直接在 Windows 上下载 Anaconda,之后cd到下载目录,安装即可🤗 - 安装 Anaconda 时,协议太长了可以按 q 跳过(反正你也不看🤭)
- Anaconda 安装可能会很慢,耐心一点🫡
- 在执行 step 3 时,如果说没有找到
~/.bashrc,请直接cd到root后再执行 - 在执行 step 4 时,
/home/WSL用户名/就是你 Anaconda 安装的位置。比如我直接安装在了root下,所以就是export PATH="/root/anaconda3/bin:$PATH"
3.3 创建 Anaconda 虚拟环境
因为 WSL2 是一个新系统,所以我们需要重新创建环境。
-
创建环境
conda create -n 虚拟环境名称 python=3.8Downloading and Extracting PackagesPreparing transaction: done Verifying transaction: done Executing transaction: done # # To activate this environment, use # # $ conda activate learning # # To deactivate an active environment, use # # $ conda deactivate此时,虚拟环境安装完毕
-
初始化 conda 环境
conda init之后退出这个 bash,重新打开一个
-
激活虚拟环境
act 虚拟环境名称 -
安装必要的库
pip install 库的名称
4. 安装 PyTorch
-
先查看 CUDA 版本:
nvidia-smi+-----------------------------------------------------------------------------+ | NVIDIA-SMI 510.60.02 Driver Version: 512.15 CUDA Version: 11.6 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... On | 00000000:01:00.0 On | N/A | | 0% 35C P8 13W / 240W | 719MiB / 8192MiB | 5% Default | | | | N/A | +-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+ -
在 PyTorch 官网 上找到对应的安装命令:
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116Successfully installed certifi-2023.7.22 charset-normalizer-3.3.0 idna-3.4 pillow-10.1.0 requests-2.31.0 torch-1.13.1+cu116 torchaudio-0.13.1+cu116 torchvision-0.14.1+cu116 typing-extensions-4.8.0 urllib3-2.0.7 -
测试 PyTorch 是否可用:
python>>> import torch >>> dummpy_tensor = torch.ones((1, 2, 3)) >>> dummpy_tensor.cuda() tensor([[[1., 1., 1.],[1., 1., 1.]]], device='cuda:0')现在,我们的 CUDA 版本的 PyTorch 就可以用了!
4. 使用 VSCode 打开 WSL2
4.1 方式1
直接在我们想要打开的文件夹下,Shift + 右键,选择 在此处打开 Linux shell(L),之后在打开的终端输入 code ./ 即可。或者直接在 WSL2 终端中输出 code ./,之后手动再次选择文件夹也可以。
code ./
Installing VS Code Server for x64 (f1b07bd25dfad64b0167beb15359ae573aecd2cc)
Downloading: 100%
Unpacking: 100%
Unpacked 1608 files and folders to /root/.vscode-server/bin/xxxxxxxxxxxxxxxxxxxxx
这里是提示我们要安装 VSCode,等待安装完毕即可。
4.2 方式2
当我们安装好 WSL2 后,可以在 VSCode 中搜索 WSL 插件,安装完毕后即可在 VSCode 中远程链接 WSL2 了(和 SSH 远程链接服务器差不多)。
5. WSL2 和 Windows 共享 Proxy
- 打开 Allow LAN(允许局域网)
- 打开环境变量
cd notepad.exe .bashrc - 添加语句:
此处需要注意的是,hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*') export https_proxy="http://${hostip}:7890" export http_proxy="http://${hostip}:7890" export all_proxy="socks5://${hostip}:7890"7890是你设置的端口号,可以在 Proxy 软件中的port中设置 - 更新环境变量
source .bashrc - 可以通过
ping命令来进行测试
Note
- 如果之后失效了,关闭 Allow LAN(允许局域网) 再打开就可以了。
知识来源
- 旧版 WSL 的手动安装步骤
- WSL2 修改安装目录
相关文章:
WSL2的安装与配置(创建Anaconda虚拟环境、更新软件包、安装PyTorch、VSCode)
1. WSL2 安装 以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”),然后输入以下命令: dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /a…...
【鸿蒙软件开发】ArkTS常见组件之单选框Radio和切换按钮Toggle
文章目录 前言一、Radio单选框1.1 创建单选框1.2 添加Radio事件1.3 场景示例二、切换按钮Toggle2.1 创建切换按钮2.2 创建有子组件的Toggle2.3 自定义样式selectedColor属性switchPointColor属性 2.4 添加事件2.5 示例代码 总结 前言 Radio是单选框组件,通常用于提…...
今年阿里云双十一服务器优惠价格讨论_看看大家怎么说?
2023阿里云双十一云服务器大概会降到什么区间?阿里云服务器网认为会在当前的优惠价格基础上,降价10%左右,可以在阿里云CLUB中心领券:aliyun.club 云服务器专用满减优惠券。阿里云服务器网从各个渠道了解到大家对今年阿里云双十一服…...
LC-1402. 做菜顺序(记忆化搜索 ==> 动态规划、贪心)
1402. 做菜顺序 困难 一个厨师收集了他 n 道菜的满意程度 satisfaction ,这个厨师做出每道菜的时间都是 1 单位时间。 一道菜的 「 like-time 系数 」定义为烹饪这道菜结束的时间(包含之前每道菜所花费的时间)乘以这道菜的满意程度&#x…...
泰森多边形
泰森多边形 93 泰森多边形又叫沃洛诺伊图(Voronoi diagram),得名于Georgy Voronoi,是一组由连接两邻点线段的垂直平分线组成的连续多边形。一个泰森多边形内的任一点到构成该多边形的控制点的距离小于到其他多边形控制点的距离。…...
YOLOV8 进行docker环境配置
修改docker文件 原docekerfile中ADD https://ultralytics.com/assets/Arial.ttf https://ultralytics.com/assets/Arial.Unicode.ttf /root/.config/Ultralytics/下载很慢,可以在外部下载好,放入docker文件夹中,再将源代码改为ADD Arial.ttf…...
sealos一键部署K8S环境(sealos3.0时代教程过时了,目前已经4.0了,请移步使用Sealos一键安装K8S)
1 安装Sealos(4.0版本) sealos部署k8s贼方便,只需要一条init命令即可,3分钟部署完(下载安装包的时间不算)。 官方教程:https://www.sealyun.com/instructions/1st #主机名: hostnamectl set-hostname mas…...
【C++】stackqueue
适配器是一种设计模式 , 该种模式是将一个类的接口转换成客户希望的另外一个接口 。 虽然 stack 和 queue 中也可以存放元素,但在 STL 中并没有将其划分在容器的行列,而是将其称为 容器适配 器 ,这是因为 stack 和队列只是对其他容…...
Hive篇面试题+详解
Hive篇面试题 1.什么是Hive?它的主要功能是什么? Hive是一个基于Hadoop的数据仓库工具,它提供了一个类SQL的查询语言(HiveQL)来查询和分析存储在Hadoop集群中的大规模数据。Hive的主要功能是将结构化数据映射到Hadoop…...
Mysql批量插入更新如何拆分大事务?
拆分大事务 一、解决方案二、遇到问题之前在运行Mysql任务的时候报错:binlog(1610646347 bytes) write threshold exceeded,原因是Mysql任务提交的是个大事务,超出binlog设定阈值,使得系统自动终止事务 一、解决方案 使用limit分页拆分大事务 CREATE PROCEDURE `split_tran…...
【计算机网络原理】初始网络基础
文章目录 1. 网络发展史1.1 单机时代1.2 网络互连局域网 LAN广域网 WAN 2. 网络通信基础2.1 IP 地址2.2 端口号2.3 协议2.4 五元组2.5 协议分层2.5.1 OSI七层模型2.5.2 TCP/IP五层模型 2.6 封装和分用2.6.1 数据封装(发送方情况)2.6.2 数据分用(接收方情况) 总结 1. 网络发展史…...
【sqlserver】配置管理器打不开
问题描述 无法连接到 WMI 提供程序。您没有权限或者该服务器无法访问。请注意,您只能使用SQL Server 配置管理器来管理 SQL Server 2005 和更高版本的服务 器。无效类[0x80041010] 解决方式: 命令提示符-右键-以管理员身份运行,再把以下代码执行一遍&…...
磁盘清理 | 已经卸载的软件还出现在应用和功能里怎么办?
一句话总结解决方法: 安装Geek Uninstaller,删除卸载残留。 问题描述: 最近磁盘满了,需要删除一些平时不常用的软件,但是发现一个问题。就是已经删除的软件,仍然会出现在“应用与功能”中。并且显示卸载图标为灰色&am…...
C++之异常
目录 一、C语言传统的处理错误的方式 二、C的异常 1、概念 2、关键字 3、基本格式 三、异常的抛出和捕获 1、异常的抛出和匹配原则 2、 在函数调用链中异常栈展开匹配原则 四、异常抛派生类,基类捕获 五、异常的重新抛出 六、异常安全 七、异常的优缺点…...
动态天气预报:Living Weather HD for Mac
Living Weather HD能够为Mac用户提供及时、准确、个性化的天气信息,并提供了丰富的定制选项,使用户能够更加方便地查看天气状况。 具有以下特点: 显示世界各地的准确天气预报和当地时间。自动探测出用户所在的首个地点,并通过搜…...
深度神经网络时与协方差矩阵
平时训练深度神经网络时,什么时候用到了协方差矩阵 在深度神经网络的平时训练过程中,一般情况下不直接使用协方差矩阵。然而,协方差矩阵的概念和相关性的考虑在某些情况下可以对网络的训练和优化起到一定的指导作用。 下面是一些与协方差矩…...
idea中java类属性(字段)链式赋值
很多人看到标题可能会想到 lombok 的 Builder,lombok 在国内用的挺多的,开源的组件中 mybatis-plus 中用到了这个,使用这个有一个问题就是通过对应 get 和 set 方法找不到对应的赋值方法,因为 lombok 使用了 apt 在编译期生成了相…...
vue通知(滚动)
1. li宽度不顾定 <template><div id"app"><div id"box" mouseover"clearLeft" mouseleave"setLeft"><ul :style"{ transform: translateX( left px) }" ref"cmdlist"><li v-for&qu…...
linux安装新版本git2、配置github-ssh。(centos、aws)
一、安装Git 1、yum默认版本git #1.安装git sudo yum install git -y #2.确认Git已经安装成功 git --version如果要安装较新版本,可以安装一个repo ,但是我这第一次尝试失败了,执行完提示找不到git2u,ius repo也连不上。而且每次…...
毅速丨3D打印结合拓扑优化 让轻量化制造更容易
制造轻量化对于提高能源利用效率、提高产品性能和减少环境影响,推动制造业的绿色化、高质量发展具有重要的促进作用。 轻量化设计对许多领域都有着重要影响,尤其是那些需要降低能源消耗、提高运输效率或减少对环境影响的领域。如航空航天,轻量…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考
目录 lua脚本 记录流水 记录流水的作用 流水什么时候删除 我们在做库存扣减的时候,显示基于Lua脚本和Redis实现的预扣减 这样可以在秒杀扣减的时候保证操作的原子性和高效性 lua脚本 // ... 已有代码 ...Overridepublic InventoryResponse decrease(Inventor…...
第14节 Node.js 全局对象
JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局…...
学习 Hooks【Plan - June - Week 2】
一、React API React 提供了丰富的核心 API,用于创建组件、管理状态、处理副作用、优化性能等。本文档总结 React 常用的 API 方法和组件。 1. React 核心 API React.createElement(type, props, …children) 用于创建 React 元素,JSX 会被编译成该函数…...
