Windows Dev Drive快速上手体验
Windows 11 23H2引入了Windows Dev Home和Dev Drive,后者基于ReFS文件系统,提供了性能提升和数据可靠性。在基准测试中,Dev Drive在某些开发命令下表现优于NTFS,平均领先约5秒。虽然Dev Home的功能尚未完全可用,但Dev Drive在日常开发中仍显示出一定的优势,值得开发者尝试。
本文记录了重新构建Python编程环境的过程,主要包括从零开始构建面向PyQt5的环境和整理混乱的Python环境。使用miniconda管理多个Python环境,强调了conda的包管理和虚拟环境管理功能,介绍了mamba作为conda的替代品以提高依赖解析和下载速度,并详细说明了安装CUDA和PyTorch的步骤。
虽然日常工作里做Web开发比较多,一般都是全套JS/TS解决问题,但偶尔也会有用到Python的场景,如涉及到数据分析、科学计算和机器学习等领域,Python往往是绕不开的,也会在特定领域用Python去展开一些后端或者RPC的开发。
但是好巧不巧,现在我的工作电脑上Python的环境可以说是一塌糊涂,版本和依赖都很混乱。为此,我打算好好地整理一下我的Python使用流程和环境,打造一个干净快速的开发环境。
这篇博客主要记录我折腾和理解Python环境的过程,主要有两项工作
全局只使用一个Python(winget官方源),使用miniconda管理多个Python环境
~/AppData/Local/Microsoft/WindowsApps/python.exe
)使用miniconda来管理虚拟环境,满足特定环境开发需求,如机器学习、Qt开发等
$pythonPath -u $fullFileName
配置即可conda是一个包管理器,也提供虚拟环境管理功能,这二者也是我们使用conda的重要原因。
在conda之上,我们有两个“分支”都可以获取conda本体:
这里由于我的需求并不需要anaconda的全部库,选择了miniconda。
终端美化方面请移步:打造自己的终端解决方案
使用conda init <shell>
可以为指定Shell注入conda-hooks,启用虚拟环境能力
不推荐在日用Shell中启用,这就是我Powershell卡的罪魁祸首
现在的conda在安装时不再建议添加环境变量,而是使用专门的Anaconda Prompt(即专门的Shell)来操作。
Not recommended.Instead,open Anaconda with the Windows Start menu and select "Anaconda (64-bit).This add to "PATH" option makes Anaconda get found before previously installed software,but may cause problems requiring you to uninstall and reinstall Anaconda.
我本来不理解,直到配置了新电脑发现我的老电脑的Powershell启动奇慢无比,才开始找原因。
如果不将conda的相关路径添加到环境变量,如下图的四项所示(其实GCC那项如果你已经安装了其他GCC就不用了),你就不能在Anaconda Prompt以外的地方(如Powershell)中使用conda
命令。
这不会对你的性能产生什么影响,如果你没有程序不兼容的话可以添加,比较方便。
这里个人推荐只添加$CONDA/Library/bin
和$CONDA/Library/usr/bin
两个目录到PATH中,而不要添加根目录(包含Python),这样就可以使用conda功能而不破坏全局Python版本管理。
base
环境运行conda init powershell
会在你的用户目录$PROFILE
生成一个profile.ps1
,里面的内容如下,而这个就是我Powershell启动慢的罪魁祸首:
#region conda initialize
# !! Contents within this block are managed by 'conda init' !!
If (Test-Path "C:\Users\kirito\anaconda3\Scripts\conda.exe") {
(& "C:\Users\kirito\anaconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | ?{$_} | Invoke-Expression
}
#endregion
性能对比如下,可以说是立竿见影:
如果你没有频繁调试Python的需求,请不要将这个profile.ps1
设为常加载项,即使你使用conda config --set auto_activate_base false
取消了自动激活base
环境,它也会执行上述检查路径的过程拖慢启动。
conda create -n <name> python=<version>
创建一个虚拟环境并指定版本conda activate <name>
激活虚拟环境conda deactivate
退出当前虚拟环境,回到base环境conda env info
查看当前虚拟环境信息conda env list
列出所有虚拟环境conda env remove -n <name>
移除一个虚拟环境(并删除其依赖)conda env export > env.yaml
导出当前虚拟环境配置conda create -f <config>
从配置文件复制虚拟环境conda update -n <env> <pkg>
更新依赖
<env>
可以不指定,默认更新base环境(或当前环境)<pkg>
可以指定为conda或anaconda来更新自身conda install -n <env> <pkg> -c <channel>
安装依赖
<env>
可以不指定,默认更新base环境(或当前环境)<pkg>
* 可以指定为Python,为当前环境安装自己的Python,否则将使用环境变量中的Python**conda虽然有着优秀的科学计算环境和虚拟环境管理,但其令人诟病的依赖解析速度~~(永远在solving)~~和单线程下载不禁让人想起隔壁的难兄难弟npm。
mamba为了改写conda下载慢的局面应运而生了,主打下面这些特性:
conda
无缝替换为mamba
(drop-in alternative),可以用mamba来执行任何conda指令,包括安装依赖和虚拟环境libsolv
加速依赖解析安装mamba的指令
$ conda install -c conda-forge mamba
安装完成后飞速体验了下,确实起飞
使用mamba
安装pytorch:
# 创建并激活虚拟环境
$ mamba create -n pytorch python=3.9
$ mamba activate pytorch
# 使用官方推荐的安装方式
$ mamba install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
可以看到1.5GB的文件相较于mamba的速度可以说是直接起飞,限制你的只有网速和防火墙。
由于我之前安装好了cuda11.8和对应的cudnn,这里直接展示结果(也可以看到mamba全新安装pytorch居然只用了10分钟):
由于之前Winget手贱更新Conda的时候不小心把我之前辛苦配好的环境卸载了,当时安装的时候就挺痛苦的,半天都启用不了cuda。
半年后的今天我再来捋一捋这个环境依赖的逻辑,看看能不能跑通。
使用环境:miniconda+mamba
如果你不是N卡用户或者只想使用CPU请跳过这部分
nvidia-smi
查看显卡信息,可以看到我的cuda版本是12.0根据cuda版本在官网中下载对应版本的CUDA Toolkit,版本要求是不高于自身GPU版本的Pytorch最高支持版本
nvcc -V
访问Pytorch官网获取你的平台的安装代码:
我的平台安装代码如下(我使用mamba替代conda加快了安装进程)
# 创建并激活虚拟环境
$ mamba create -n pytorch python=3.9
$ mamba activate pytorch
# 使用官方推荐的安装方式
$ mamba install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
由于我之前安装好了cuda11.8和对应的cudnn,这里直接展示结果(也可以看到mamba全新安装pytorch居然只用了10分钟):
作者: ChlorineC
创建于: 2023-07-08 17:49:00
更新于: 2025-02-12 15:41:00
版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
Windows 11 23H2引入了Windows Dev Home和Dev Drive,后者基于ReFS文件系统,提供了性能提升和数据可靠性。在基准测试中,Dev Drive在某些开发命令下表现优于NTFS,平均领先约5秒。虽然Dev Home的功能尚未完全可用,但Dev Drive在日常开发中仍显示出一定的优势,值得开发者尝试。
Bun 1.0是一个新的JavaScript运行时,作为Node.js的替代品,提供更快的包管理和开发解决方案。尽管目前在生产环境中尚不成熟,但它集成了多种工具,支持统一模块标准和Web API,具有显著的性能优势。Bun的包管理器速度比pnpm快4倍,支持原生JSX和TS,且具备构建工具的潜力。整体来看,Bun在运行时和工具链上均有加速效果,但仍需进一步发展以满足生产需求。
本文讨论了如何优化命令行终端体验,包括Shell Prompt的设计、Prompt工具的选择(如oh-my-posh和starship)、Nerd Fonts的使用,以及Powershell和Unix终端的配置。强调了不同版本Powershell的特点和配置文件的管理,介绍了oh-my-zsh的安装与主题选择,最后提到tmux作为终端复用工具的使用。
本文探讨了在React中使用react-use-websocket库来实现WebSocket功能的最佳实践,包括如何封装WebSocket逻辑、处理连接状态、发送和接收消息,以及使用ArrayBuffer传输文件。此外,文中还介绍了Socket.IO的工作原理及其与WebSocket的区别,提供了Node.js后端服务器的示例代码,展示了如何实现低延迟的双向通信和进度反馈。