ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

PyCharm 2024配置WSL2+Conda完整指南:避坑经验与实操详解

PyCharm 2024配置WSL2+Conda完整指南:避坑经验与实操详解 我经常看到有人问机器学习开发环境怎么搭我的结论都一样搞不定环境代码写得再漂亮也白搭。最近在 PyCharm 2024 上折腾 WSL2 Conda前后踩坑花了大半天写下来给后来人避雷。1. 为什么偏偏是 PyCharm、WSL2 和 Conda 这个三方组合先说清楚这套方案解决什么问题。如果你在 Windows 上做 Python 开发尤其是深度学习、数据分析或后端服务大概率遇到过两类难题一是某些依赖包比如 MySQL 驱动、科学计算库在 Windows 下编译失败或压根没有发行版二是不同项目依赖的 Python 版本、包版本互相冲突最终搞得主环境一团糟。WSL2 就是解决第一个问题的关键。Conda 就是解决第二个问题的关键。PyCharm 则是把这两者统一管理的入口。1.1 WSL2 好在哪儿和传统虚拟机有什么本质区别WSL2 不是虚拟机但又很像虚拟机。它基于 Microsoft 的轻量级虚拟化技术在 Hyper-V 之上跑一个完整的 Linux 内核。Windows 通过 9P 协议访问 Linux 文件系统性能和原生 Linux 接近。正因如此你在 Ubuntu 里安装 TensorFlow、PyTorch、OpenCV 这类重依赖库时体验非常接近一台真实服务器。传统方案是用 VirtualBox 或 VMware 装 Ubuntu 镜像但那套方案有内存开销大、磁盘镜像占空间、Windows 和 Linux 之间传输文件极不方便的毛病。WSL2 的 Windows 与 Linux 文件系统是可以互相访问的开发体验自然流畅得多。我在实际使用中感受最深的一点是不用为了装一个驱动而重启系统也不用因为虚拟机的网络桥接模式头疼。WSL2 使用 NAT 模式自动管理网络默认就能联网更新软件源这对后续安装 Conda 和 Python 包很重要。1.2 Conda 的价值不只在环境隔离这一点很多人忽略了Conda 最吸引人的是它可以精确锁定 Python 版本。很多项目依赖 Python 3.6、3.8而不是当前最新的 3.12。如果用系统自带的 apt 安装 Python版本通常与你需要的偏差较大而且同时维护多个版本非常痛苦。Conda 可以把 Python 解释器、pip 和所有依赖全部装进一个独立目录用 environment.yml 文件可以一键复现整个环境。这一点配合 PyCharm 来选择解释器非常自然每个项目指向自己的 Conda 环境互不干扰。需要强调的是Conda 不只是 Python 包管理器它还可以管理 PyTorch、CUDA Toolkit 这类非 Python 依赖。这是其他工具比如 venv pip做不到的。1.3 PyCharm 2024 对 WSL2 的原生支持已经相当成熟从 PyCharm 2020.1 开始JetBrains 就加入了 WSL2 解释器支持。到 2024 版本这个功能已经非常好用了。你不需要在 PyCharm 里手动输入 SSH 地址也不需要配置端口转发它直接通过wsl.exe命令识别你本机的发行版并调用里面的 Python 解释器。更关键的是PyCharm 自带终端会默认进入 WSL 环境你对文件的修改会先用 9P 协议同步给 Linux 侧再在 Windows 侧做索引和代码分析。这意味着你可以很方便地用 Windows 的图形界面写代码代码却跑在真正的 Linux 内核上。所以这套组合几乎是为 Windows 上做 Python 深度学习或数据工程的人量身定制的。2. 环境准备WSL2 与 Ubuntu 安装全细节2.1 检查 Windows 版本和虚拟化支持先确认你的 Windows 是 Win10 2004 以上或 Win11。我一开始在旧版本上折腾卡了半天才意识到是系统版本太老。打开设置 → 系统 → 关于查看内部版本号。如果不满足条件请先更新 Windows Update。另外虚拟化功能要在 BIOS 里开启。用快捷键CtrlShiftEsc打开任务管理器到“性能”标签页查看“虚拟化”是否显示“已启用”。如果显示“已禁用”需要进入 BIOS 打开 Intel VT-x 或 AMD-V。这一步看似基础但实际上有大量“wsl2安装失败”案例最后排查原因都是虚拟化没开。别嫌无聊发现问题越早后面省的时间越多。2.2 快速安装 WSL2 及 Ubuntu 22.04/24.04用管理员权限打开 PowerShell 或 Windows Terminal。直接执行wsl --install这个命令会自动安装 WSL2 内核、虚拟机平台组件并从应用商店下载默认的 Ubuntu 发行版。我这里建议直接装 Ubuntu 22.04 LTS。如果你用的是 Win11也可以选 Ubuntu 24.04 LTS但说实话 22.04 的兼容性测试更充分网上遇到的坑更少。如果wsl --install执行之后提示需要重启系统先重启再继续。重启后进入开始菜单打开 Ubuntu 应用首次启动会要求创建用户名和密码。这跟 SSH 服务器登录是一样的用户名就是你平时的管理员名密码是专用于WSL的可以单独设。安装完成后验证一下wsl -l -v执行结果应显示发行版名和版本号版本号是 2 就代表 WSL2 正确启用。如果版本号是 1需要执行wsl --set-default-version 22.3 文件系统路径规划别把项目放在 /mnt/c 下跑这里特别想强调一个非常多新手踩的坑。WSL2 内部访问 Windows 文件也就是/mnt/c/...路径的性能很差因为需要跨协议转换。尤其是 PyCharm 对代码做索引、运行测试时如果项目大量文件在/mnt/c下速度会慢到让人怀疑人生。正确做法是把你的代码仓库放在 WSL2 的文件系统里也就是/home/用户名/项目名下然后在 PyCharm 里通过\\wsl$路径打开项目。这样读取和写入都是本地 Linux 文件系统性能溢出不会成为瓶颈。这是 WSL2 环境配置中最重要的一条经验后面我细说怎么在 PyCharm 里操作。3. Conda 安装与初始化最容易翻车的几个细节3.1 Miniconda 还是 Anaconda我的选择Anaconda 是全家桶自带几百个数据科学包装上就能做数据分析。但它的体积很大安装耗时而且自带的库版本比较固定部分场景下不能满足自定义需求。我更推荐 Miniconda只包含基础 Python 环境和 Conda 包管理器其他包自己按需安装。安装时长少一半也更好维护环境目录也更整洁。3.2 在 Ubuntu 里下载安装 Miniconda先更新一下系统的包索引避免后续依赖错误sudo apt update然后进入用户目录下载 Miniconda 安装脚本cd ~ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh接着执行脚本bash Miniconda3-latest-Linux-x86_64.sh一路回车接受许可协议安装目录建议保持默认/home/用户名/miniconda3。输出目录写在~/.bashrc里时路径中的空格会出问题建议输出“no”避免写死。所以当它询问是否初始化 Conda 时选择“no”稍后用命令手动初始化和修改。脚本结束后执行~/miniconda3/bin/conda init这会自动在~/.bashrc中添入路径。然后重开终端或执行source ~/.bashrc此时命令行提示符应该会出现(base)前缀。3.3 常见报错conda 命令找不到在 Windows CMD 或 PowerShell 里输入conda报“不是内部或外部命令”很大概率是因为 Conda 的安装路径没有写入用户环境变量。你可以在 Ubuntu 里用绝对路径执行~/miniconda3/bin/conda来确认是否安装成功如果绝对路径可用就说明确实是 PATH 配置缺失。执行export PATH$HOME/miniconda3/bin:$PATH echo export PATH$HOME/miniconda3/bin:$PATH ~/.bashrc source ~/.bashrc这样处理之后conda命令就能正常使用了。记住Windows 侧命令提示符找不到 conda 是正常的因为 Conda 安装在 WSL 内部Windows 程序无法直接调用。3.4 Conda 换源国内下载提速的必要操作如果你直接使用官方源下载 Python 包速度可能不快。我的建议是换用国内镜像源。执行conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes再执行conda config --show channels确认当前源。对于 pip 包在~/.pip/pip.conf中添加index-url https://pypi.tuna.tsinghua.edu.cn/simple也能显著加速依赖下载。实测下来清华源对于 Anaconda 官方仓库几乎全量镜像安装常用包非常稳。如果你访问网络不稳定这是最省心的解决方案。4. PyCharm 2024 配置 WSL Conda 解释器完整流程4.1 安装中文插件和 AI 插件可选PyCharm 2024 社区版和专业版支持插件扩展。如果看英文界面别扭在 Settings → Plugins → Marketplace 里搜索 Chinese安装中文语言包重启即可。AI 插件如 GitHub Copilot在 2024 版本直接集成在 Settings → Plugins 中。但我的经验是AI 插件在 WSL2 环境下的代码补全其实差别不大因为补全主要靠本地索引不依赖解释器路径。这个环节优先级最低可后处理。4.2 新建项目时如何正确选择 WSL 解释器新建项目或打开已有项目后依次进入 File → Settings → Project: 项目名 → Python Interpreter。点击右侧的齿轮图标选择 Add Interpreter。在弹窗里选择 WSL这时 PyCharm 会自动检测已安装的 Linux 发行版。你会看到类似Ubuntu-22.04的条目点击它。此时关键点来了PyCharm 会要求你选择一个 Python 解释器路径。如果你已经用 Conda 创建了环境直接点击右侧浏览按钮在弹出的路径选择窗口中进入/home/用户名/miniconda3/envs/环境名/bin/python。如果还没创建环境可以直接选择~/miniconda3/bin/python这是 base 环境或者先切到 WSL 终端创建新环境再回来配置。提示选完后 PyCharm 会自动生成一个运行脚本脚本会先执行source /home/用户名/.bashrc再执行conda activate 环境名。如果 PyCharm 提示找不到 Conda 命令多半是它没有读取到.bashrc中的 PATH 配置。4.3 通过现有项目添加 WSL Conda 环境如果项目已经配置过本地解释器切换同样简单。还是进入 Settings → Python Interpreter → Add Interpreter → WSL。选择发行版后指定解释器路径时更推荐用 Conda 环境路径/home/用户名/miniconda3/envs/项目专用环境/bin/python选择完成后点击 OKPyCharm 会自动在 WSL 里执行/home/用户名/miniconda3/envs/项目专用环境/bin/python -V如果返回 Python 3.x 正常说明解释器配置成功了。然后 Settings → Project → Project Structure 可以右侧添加内容根目录确保 PyCharm 正确索引项目文件。4.4 用 PyCharm 自带的终端进入 WSLPyCharm 2024 的 Terminal 面板默认可以切换为 WSL Shell。在 Settings → Tools → Terminal 中将 Shell path 修改为wsl.exe -d Ubuntu-22.04这样打开终端后自然就进入 WSL 的默认用户目录命令行提示符会出现(base)。你就不需要额外开一个 Ubuntu 窗口日常敲命令、装包完全在 PyCharm 内部完成。这个设计非常方便调试代码时直接看终端输出比 Windows PowerShell 顺畅得多。4.5 代码运行与文件同步机制这里再解释一下文件同步原理因为很多人配置完跑代码会一脸问号。当你在 PyCharm 打开\\wsl$\Ubuntu-22.04\home\用户名\项目名路径下的文件时Windows 的 NTFS 和 Linux 的 ext4 文件系统通过 9P 协议交换数据。PyCharm 实际上是把文件内容同步到 WSL 侧的临时目录再通过 WSL 执行 Python 脚本。所以当你在 Windows 侧修改了文件内容保存后 WSL 侧的本地副本会自动更新。这就是为什么你不必在 WSL 里额外克隆一份代码库。但在实际开发中我还是建议把项目放到 WSL 文件系统内部这样 PyCharm 的文件监控、索引上没有额外的跨文件系统开销运行性能会更接近原生 Linux。5. 高频报错与排查技巧实录5.1 conda activate 报错run conda init before conda activate这个报错的原文通常是CommandNotFoundError: Your shell has not been properly configured to use conda activate. To initialize your shell, run $ conda init原因是 Conda 没有把初始化脚本写入当前 shell 的配置文件中。解决方法很简单在终端执行~/miniconda3/bin/conda init source ~/.bashrc然后重新打开终端。如果没效果看一下~/.bashrc是不是被其他脚本覆盖了手动在文件底部追加# conda initialize # !! Contents within this block are managed by conda init !! __conda_setup$(/home/用户名/miniconda3/bin/conda shell.bash hook 2 /dev/null) if [ $? -eq 0 ]; then eval $__conda_setup else if [ -f /home/用户名/miniconda3/etc/profile.d/conda.sh ]; then . /home/用户名/miniconda3/etc/profile.d/conda.sh else export PATH/home/用户名/miniconda3/bin:$PATH fi fi unset __conda_setup # conda initialize 这段代码就是 PyCharm 在添加解释器时会默认尝试执行的内容。如果这段代码在.bashrc中存在PyCharm 基本不会在这个环节翻车。5.2 “No output from conda activate ...”——这个是最隐蔽的坑如果你在 PyCharm 的运行配置里手动指定了 Conda 环境并触发了一个脚本前执行命令很容易报这个错error: no output from conda activate /d/...这个原因往往是你在 Windows 的路径下执行了 Linux 的 Conda 命令。在 Windows 的 PowerShell 或 CMD 环境下conda是 Windows 安装的 Conda而在 WSL 环境下conda是 Linux 安装的 Conda。两者不仅路径不同激活机制也不同。当 PyCharm 把你 Windows 侧的 Conda 路径和 WSL 解释器混在一起时就会产生这个问题。我的解法是在 PyCharm 里统一用 WSL 解释器并且别手动指定 Conda 激活脚本。直接在解释器路径选~/miniconda3/envs/环境名/bin/python就足够了PyCharm 会自动处理好 shell 初始化逻辑。5.3 系统找不到文件c:\users\howard...这个报错是典型的路径分隔符混乱。你们看到 Windows 报错系统找不到文件 c:\users\howard...基本都是在 Windows 侧尝试运行 Linux 指令或者在 WSL 侧填写了 Windows 路径。有效处理方式是将所有需要填写的路径统一转化为 WSL 内部路径。比如 Windows 的d:\projects\zotero对应 WSL 里的/mnt/d/projects/zotero但这只适用于文件访问不适合 Python 解释器。因为 Python 解释器和依赖库都必须安装在同一操作系统内如果代码用 Windows Python 运行却想读取 Linux 下的 Conda 环境那是不可能的。所以遇到这种报错先确认解释器路径前缀是/home/还是/mnt/c。如果是/mnt/...代表解释器在 Windows 磁盘上不符合预期改成/home/用户名/miniconda3/...即可。5.4 WSL2 安装 CUDA 和英伟达驱动相关问题热词里有“wsl2安装cuda”和“wsl2英伟达驱动生效吗”。这里统一说下WSL2 支持 GPU 直通前提是你的 Windows 侧已经安装好了 NVIDIA 驱动。驱动版本要支持 CUDA 11、CUDA 12 以上。WSL 内不需要安装 Windows 版驱动它直接借用 Windows 的 GPU 驱动再把 CUDA 库安装到 Linux 侧。具体检查方法是在 WSL 终端执行nvidia-smi如果能看到显卡型号和驱动版本说明 GPU 可用。然后在 Conda 环境里用conda install cudatoolkit或直接装 PyTorch 的 GPU 版本即可。千万别在 WSL 里再装一套 NVIDIA 驱动那反而会导致冲突。5.5 常见问题与解决方案速查表现象原因解决方案命令行输入 conda 显示“不是内部或外部命令”Conda 的 PATH 未配置export PATH$HOME/miniconda3/bin:$PATH写入.bashrcconda activate报错提示先运行conda initConda shell 初始化脚本缺失执行conda init并source ~/.bashrcPyCharm 显示No output from conda activate ...Windows 与 WSL 的 Conda 路径混淆统一使用 WSL 解释器路径不手动指定激活命令WSL 中执行 Python 代码非常慢项目放在/mnt/c下将项目移到/home/用户名/下PyCharm 找不到 WSL 发行版WSL2 未正确启用或未安装发行版执行wsl -l -v检查版本wsl --set-version 发行版名 2切换nvidia-smi无法使用Windows 驱动未安装或不支持从 NVIDIA 官网安装最新 Game Ready 或 Studio 驱动还有一个小技巧如果你的 Ubuntu 系统默认 shell 是 zshConda 初始化时要执行conda init zsh只执行conda init可能只改.bashrc导致 zsh 下还是无法激活环境。6. 实操心得与几点忠告这是我这次配置中花时间最多、感受也最深的一部分内容整理成几条建议供参考。第一整个安装过程最好按 WSL2 → Ubuntu → Conda → PyCharm 解释器 这个顺序来别倒着来。我之前有一次图省事先装了 Anaconda再折腾 WSL2结果 Anaconda 检测不到系统内部虚拟化环境变量还覆盖了系统原有配置后面清理起来特别麻烦。第二MS Store 里安装 Ubuntu 后不要马上在 PyCharm 里配置解释器。先去 WSL 终端把 apt 更新、基础包装好创建一个完整可运行的环境比如装上python3-pip、build-essential然后再回 PyCharm 选择解释器避免 PyCharm 在初始化环境时遇到编译工具缺失导致后续安装某些包时失败。第三善用 PyCharm 2024 的 “Python Packages” 面板。在你配置好 WSL 解释器后底部会多出一个 Packages 管理视图你可以直接在里面搜索并安装库到当前环境它会自动调用 WSL 里的 pip 或 conda。比手动在终端里切换窗口高效很多。第四保存项目管理文件时建议把.idea放在 WSL 文件系统里同时提前建立一个.gitignore把.idea排除掉避免跨文件系统同步带来的索引问题。不要直接在 Windows 上创建项目再复制到 WSL 里很容易遇到文件权限问题比如某些文件在 Windows 侧没有执行权限导致 WSL 跑脚本时报 Permission denied。第五如果只是做数据分析和脚本调试PyCharm 社区版就够用了。但如果你想用 Django、Flask 远程调试或数据库工具专业版确实方便很多。2024 版本的专业版首次激活后会提供 30 天试用足够你验证环境配置是否顺利。最后分享一个小技巧这是我在配置完环境之后才发现的。如果 PyCharm 里打开终端后没有自动进入(base)环境多半是因为 Shell path 填的是wsl.exe而不是指定发行版的完整命令。改成wsl.exe -d Ubuntu-22.04之后PyCharm 不仅能记住默认工作目录还能继承 Conda 的激活状态后续跑脚本基本不需要手动输入任何环境激活命令全部自动完成。这套环境配置好之后你的 Windows 开发机器就变成了一台带图形界面的 Linux 开发工作站。用 WSL2 跑 Python用 Conda 管环境用 PyCharm 写代码三者配合得当体验完全可以媲美纯 Linux 环境还能兼顾 Windows 日常使用。希望这篇踩坑记录能帮你少绕几个弯。
返回列表