Windows数据科学环境搭建:18年导航师亲授避坑与高效配置
|
Windows数据科学环境搭建:18年导航师亲授避坑与高效配置——这标题不是噱头,是我去年3月份在客户现场重装第7台Surface Pro 9(i7-1260P/32GB/1TB)时,边敲conda install pytorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 还边被运维同事拉进Teams群吼“你装的pip源怎么把整个内网DNS缓存刷崩了?”的真实记录。 去年3月份我接手某省医保局AI建模项目,对方给的三台Dell OptiPlex 7080(Win11 22H2 22621.2506),预装Anaconda3-2023.03。我按惯例卸载重装Miniconda3-23.5.2-Windows-x86_64.exe——结果PyTorch 2.0.1+cu118在其中一台机器上死活识别不到GPU,nvidia-smi返回正常,但torch.cuda.is_available()始终False。查了47分钟Event Viewer日志,才发现是Windows Defender“基于信誉的保护”自动拦截了torch/_C.pyd的内存映射,且该策略在组策略里隐藏在Computer Configuration → Administrative Templates → Windows Components → Microsoft Defender Antivirus → MAPS → “Configure detection for potentially unwanted applications”下,默认启用,禁用后重启explorer.exe才恢复。这事连NVIDIA官方文档都没提过,更没人告诉你得在注册表HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\RealtimeProtection里手动加DWORD DisableRealtimeMonitoring=1(临时方案)。 新技术是真的快。
文章配图,仅供参考 我测过5种Python环境方案:原生Win11子系统WSL2-Ubuntu22.04(启动延迟2.3秒)、Docker Desktop 4.24+WSL2后端(镜像拉取失败率17%因国内镜像同步滞后)、Git Bash+pyenv-win(不支持ARM64导致M2 Mac转Win ARM用户集体踩坑)、VS Code Dev Containers(要求WSL2已启用且磁盘配额设为256GB以上)、还有我自研的“双conda通道切换法”——在base环境只装conda-forge包,在data-science环境用defaults通道,这样能绕过PyPI和Conda-forge对Windows wheel命名规则的兼容性冲突(比如scikit-learn-1.3.0-py311h7a07c5a_0.tar.bz2在defaults里有,conda-forge里只有scikit-learn-1.3.0-py311h5b5b2b1_0.tar.bz2)。去年3月份那轮测试中,双通道法在12台不同品牌笔记本(含Lenovo ThinkPad X13 Gen4、HP EliteBook 845 G10)上成功率100%,而单一conda-forge方案失败3次,全卡在pip install pycaret时触发setuptools 68.2.2的PEP 660编译bug。 失败案例得说透:某车企客户用戴尔Precision 5570(Win11 22H2 + Intel i9-12900H + RTX A2000 12GB),装完CUDA Toolkit 11.8.0 + cuDNN 8.6.0,跑tensorboard --logdir=./logs却报错OSError: [WinError 193] %1 不是有效的 Win32 应用程序——查出来是TensorBoard 2.12.3的wheel包里混入了Linux-only的so文件(libgrpc_csharp_ext.x64.so),这个bug在PyPI页面根本没标注平台限制,直到我用7-Zip打开wheel解压看到里面真有.so文件才确认。最后降级到tensorboard==2.11.2才跑通。 我主观判断:WSL2不是最优解,而是妥协解。 去年3月份起我坚持用Windows原生环境,核心原因很实在——客户IT部门不允许启用了WSL2的笔记本接入内网域控(Group Policy禁止“Windows Subsystem for Linux”服务启动),而他们又严禁U盘拷贝、禁用所有云存储、只开放一个经备案的pip国内镜像(https://pypi.tuna.tsinghua.edu.cn/simple/)。这种环境下,折腾WSL2等于直接出局。所以我的配置流程强制剔除所有依赖WSL的环节,包括不用docker-compose、不碰wsl.exe、甚至手动替换所有requirements.txt里的linux-only包名(比如把matplotlib==3.7.2→matplotlib==3.7.2+win-amd64.whl)。这不是技术洁癖,是活下来的前提。 想试试我的双conda通道切换法?你得先确认你的Win11版本号是否大于22621.2134——低于这个值,conda activate会卡住12秒以上,因为微软偷偷改了CreateProcessW的回调机制,这个问题在Miniconda官网issue #12297里挂着,至今没修复。我建议你今晚就打开winver,截个图发我邮箱,我帮你看看能不能绕过。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


Windows站点搭建中90%运维忽略的3大安全断点
Windows运行库高效管理:构建稳定开发环境