
1. 为什么我会把 PyCharm 和 Anaconda 绑在一起用先把结论撂在这儿只要你写 Python 的目的大于跑个几十行的小脚本那么用 Anaconda 管环境、用 PyCharm 写代码这套组合在相当长一段时间里都是性价比最高的搭配。我自己从最早手撸pip venv到后来被各种依赖冲突折磨得没脾气再到现在整套工作流固定下来中间踩的坑够写一本小册子。这篇文章就是把这些东西一次性摊开讲清楚不管你是刚装完 Python、连解释器是什么都没搞明白的新手还是已经写过一段时间、但环境管理一直靠重装大法的老哥应该都能捞到点东西。先把两件事分开说。Anaconda 的本质是一个包管理器和环境管理器它自带了几百个科学计算相关的库还内置了 conda 这个工具。你可以把它理解成一个装 Python 的收纳箱——箱子里能放好几套互相隔离的 Python 环境每套环境里的库版本互不干扰。而PyCharm 是编辑器IDE负责的是写代码、跳转定义、调试、重构、版本控制这些事它本身不产生 Python 环境只是去借用已经存在于你电脑上的某个解释器。很多人第一次装完之后困惑的点就在这儿装了两个软件但打开 PyCharm 新建项目它默认给你建了一个.venv文件夹跟你 Anaconda 里那些环境一点关系都没有。然后就出现了我在 Anaconda Prompt 里pip install装好的包PyCharm 里 import 却报红这种经典场面。本质原因就是PyCharm 用的是一个解释器你在命令行装包用的是另一个解释器两边压根不是同一个环境。所以这篇文章的核心目标就一个把这两个软件正确地焊在一起让 PyCharm 里跑代码用的解释器跟你命令行里装的包始终是同一套东西。关于版本选择顺便先说一下。PyCharm 分社区版Community和专业版Professional。社区版免费支持纯 Python 开发日常写脚本、做数据分析、跑机器学习训练完全够。专业版多了 Web 框架支持Django、Flask 的模板跳转、数据库工具、远程开发、科学模式等对做 Web 后端或者需要连远程服务器的人更友好。如果你不确定自己需不需要先装社区版用了半年发现确实缺某个功能再考虑升级这是最省事的路径。至于网上那些关于激活的讨论我的建议很直接能用免费版就用免费版学生和教师可以通过官方教育授权渠道申请开源项目维护者也有对应的免费授权走正规路径心里踏实也不用担心哪天杀毒软件对着你的 IDE 报毒。2. 安装环节那些看起来不重要、实际上很要命的选项2.1 Anaconda 从哪里下载、装在哪下载渠道我强烈建议走两个地方Anaconda 官网或者国内高校的开源镜像站。官网的问题不是不安全而是慢一个安装包七八百兆网速一般的话能下到你怀疑人生。国内的话清华大学开源软件镜像站mirrors.tuna.tsinghua.edu.cn的anaconda/archive/目录下保存了历史版本下载速度通常能跑满带宽。进去之后按日期找最新的版本就行文件名格式类似Anaconda3-20xx.xx-x-Windows-x86_64.exe。注意一件事不要安装 Python 官网的 Python 之后再装 Anaconda这两个东西会在系统 PATH 里打架。Anaconda 自带 Python装了它就不需要再单独装一个。如果之前已经装过官方 Python建议先在添加或删除程序里把它卸掉清干净再装 Anaconda能省掉后面一大堆为什么我的 python 命令指向了另一个版本的排查时间。安装路径上我的习惯是不要装在 C 盘默认的用户目录下尤其 Windows。原因是 Anaconda 本身加上后续创建的几个环境轻轻松松吃掉 20 到 50 个 GC 盘红了之后你会非常难受。建议单独找一个盘比如D:\Anaconda3、D:\dev\anaconda3这种纯英文、无空格、无中文的路径。为什么强调纯英文无空格因为 Python 生态里有一批老库特别是科学计算和编译相关的对路径里的空格和中文处理得很糟糕装包时报莫名其妙的错排查半天最后发现是路径里有空格这种亏我吃过不止一次。2.2 安装向导里那两个勾选框Anaconda 安装过程中有两个选项会让新手纠结第一个是Install for: Just Me / All Users。如果这台电脑只有你自己用选 Just Me 就够了不需要管理员权限后续更新环境也少很多权限问题。如果是实验室公用机或者公司电脑选 All Users。第二个是Add Anaconda3 to my PATH environment variable。官方安装向导会明确建议不要勾理由是可能影响系统里其他软件。但实际用下来如果你这台机器上只有这一个 Python 发行版勾上是没问题的好处是普通 CMD 和 PowerShell 里直接就能敲conda和python。如果你选择不勾保守做法那 Anaconda 会装一个叫Anaconda Prompt的专用终端所有 conda 命令都在这个终端里执行。我的实际建议是新手先不勾用 Anaconda Prompt 就好。等你对 PATH 机制有概念了再手动把D:\Anaconda3、D:\Anaconda3\Scripts、D:\Anaconda3\Library\bin这三个目录加进系统环境变量控制权在自己手里出问题也知道从哪儿改回来。Linux 和 macOS 下安装脚本最后会问你要不要跑conda init这个要跑它会把初始化代码写进你的 shell 配置文件.bashrc或.zshrc之后新开的终端会自动带上 conda 环境。2.3 PyCharm 安装和首次启动的几个设置PyCharm 的安装就简单多了官网下载对应系统的安装包一路下一步。社区版和专业版的安装流程完全一样区别只在激活之后解锁的功能。安装过程中的选项Create Desktop Shortcut勾上省事。Update PATH Variable勾上这样命令行里能敲charm直接打开项目。Update Context Menu建议勾 Add Open Folder as Project以后在任何代码文件夹上右键就能直接用 PyCharm 打开比先开 IDE 再拖文件夹快得多。.py 文件关联勾上双击.py文件直接进 PyCharm。首次启动会问你要不要导入旧的配置如果是全新安装就选 Do not import settings。然后会让你选主题Darcula 深色 / Light 浅色和插件集插件那步可以先跳过进去之后在 Plugins 里慢慢挑。还有一步是让你登录账号同步设置个人用不登也行设置就存在本地。3. 把两者接起来解释器配置才是真正的核心3.1 先搞懂 conda 环境到底是什么在动手配置之前一定要先理解一个概念conda 环境本质就是一个文件夹里面放着一套独立的 Python 解释器、标准库、以及你装进去的所有第三方包。环境之间是完全隔离的A 环境里装的是 numpy 1.24B 环境里装 numpy 2.0两者互不影响。环境默认存放在 Anaconda 安装目录下的envs文件夹里也就是D:\Anaconda3\envs\你的环境名。进去看一眼你就明白了python.exe在根目录第三方包装在Lib\site-packages里。这就是为什么两个环境可以共存——它们各自有各自的site-packages。PyCharm 配置解释器配的就是这个python.exe的路径。一旦你理解了配解释器 指定一个 python.exe 文件这件事后面所有问题都好排查了。常用的几个环境管理命令建议背下来conda env list # 列出所有环境带星号的是当前激活的 conda create -n myproject python3.10 # 创建名为 myproject、Python 版本 3.10 的环境 conda activate myproject # 激活环境 conda deactivate # 退出当前环境 conda env remove -n myproject # 删除整个环境连带里面的包一起删其中conda env list会输出类似这样的内容那个base是 Anaconda 自带的默认环境我强烈建议不要在 base 环境里装任何项目用的包让它保持干净只做环境管理用。# conda environments: # base * D:\Anaconda3 myproject D:\Anaconda3\envs\myproject torch-gpu D:\Anaconda3\envs\torch-gpu3.2 新建项目时直接绑定 conda 环境这是最常用的流程也是我推荐的标准做法先在命令行把环境建好再让 PyCharm 去用。第一步打开 Anaconda Prompt创建并激活环境conda create -n ml-demo python3.10 -y conda activate ml-demo第二步装几个基础包验证环境是通的conda install numpy pandas matplotlib -y第三步打开 PyCharm新建项目。在 New Project 界面把Location设成你的项目目录然后把Interpreter type从默认的Project venv改成Conda。这时候下面的下拉框里会自动列出你机器上所有的 conda 环境选中刚才建的ml-demo就行。这里有个细节容易踩坑如果下拉框里找不到你刚建的环境点右边那个文件夹图标手动指定路径指向D:\Anaconda3\envs\ml-demo\python.exeWindows或者~/anaconda3/envs/ml-demo/bin/pythonLinux/macOS。手动指定永远是最保险的方式。绑定之后PyCharm 右下角状态栏会显示当前解释器名字点一下能看到完整的包列表。你可以在这里核对一下刚才装的 numpy 在不在列表里——在说明绑定成功了。3.3 给已有项目换解释器老项目想从.venv切到 conda 环境路径是File→Settings→Project: 项目名→Python Interpreter→ 点右边的齿轮 →Add→ 左侧选Conda Environment→Use existing environment→ 选你要的环境。换完之后PyCharm 会花几十秒重建索引右下角有个进度条这期间代码跳转可能会卡别以为是坏了等它跑完就好。索引这东西是 PyCharm 相比 VS Code 最大的优势之一——它会把整个环境的库都解析一遍之后你点pd.read_csv能直接跳到 pandas 的源码定义查源码找问题非常方便。3.4 图形界面建环境 vs 命令行建环境PyCharm 其实也支持直接在Add Interpreter界面里新建 conda 环境选New environment填环境名和 Python 版本它会调 conda 帮你建。这个功能能用但我个人还是更推荐命令行建。原因有两点一是在命令行里你能清楚看到 conda 输出的每一行日志出错了知道错在哪一步二是命令行建环境不依赖 PyCharm哪天你不用 PyCharm 了环境依然在那儿工具和环境的解耦对长期维护更友好。对比一下两种方式的差异维度PyCharm 图形界面新建命令行 conda create上手难度低点几下就行需要记一条命令出错时可见信息少常常只弹个报错框完整日志能看到解析依赖的过程环境位置可控默认放 envs 目录可用-p参数指定任意路径与 IDE 解耦弱换个 IDE 得重新配强环境独立存在批量复现不方便可写进脚本一条命令搞定4. 装包与镜像源让下载速度从龟速变成起飞4.1 conda 源和 pip 源不是一回事这是新手最容易混淆的点之一。conda 有 conda 的源pip 有 pip 的源两者独立配置互不影响。你在 Anaconda Prompt 里敲conda install走的是 conda 源敲pip install走的是 pip 源。很多人只配了 conda 镜像结果用 pip 装包还是慢就是因为没意识到这是两套配置。默认情况下conda 的源都在国外下载几个大包比如 pytorch能等十几分钟甚至直接超时。解决办法就是换国内镜像。清华大学镜像站是目前用得最普遍的配置方式如下。4.2 配置清华镜像源的完整步骤先配 conda 的。依次执行这几条命令Windows 在 Anaconda Prompt 里Linux/macOS 在普通终端里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 --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --set show_channel_urls yes这几条命令干的事就是往用户目录下的.condarc文件里写配置。Windows 下路径是C:\Users\你的用户名\.condarcLinux/macOS 下是~/.condarc。执行完可以用conda config --show channels看一眼顺序对不对。再说 pip 的。一条命令搞定pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这条命令会在用户目录下生成pip.iniWindows或者pip.confLinux/macOS内容是[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple注意镜像源是加速手段不是永久保险。有时候镜像站同步会滞后某个刚发布的新版本可能还没同步过来这时候可以临时用-i参数指定官方源pip install 包名 -i https://pypi.org/simple装完就结束不会改动全局配置。另一个注意点.condarc里的 channels 顺序是有意义的越靠前优先级越高。如果你把free放在main前面可能会装到版本比较老的包因为 conda 会优先在靠前的频道里找。这是我曾经踩过的坑——同样的命令同事装出来是 numpy 1.26我装出来是 1.19排查半天才发现是 channel 顺序不一样。4.3 装包到底该在命令行装还是 PyCharm 里装两个地方都能装。PyCharm 的Settings→Python Interpreter→ 左边那个号搜索包名点安装图形化操作适合记不住包名的时候用它能搜索还能看已安装版本。命令行装的优势是快、可批量、能看完整日志。我的习惯是单个小包装用 PyCharm 界面批量装或者装大包用命令行。比如配深度学习环境一次性要装 pytorch、torchvision、torchaudio用命令行写一条就完事了界面里一个个搜太慢。还有一个纪律问题同一个环境里尽量别把 conda install 和 pip install 混着用来装同一批有依赖关系的包。比如先用 conda 装了 numpy又用 pip 覆盖装了 scipy就可能出现 numpy 版本被 pip 改掉、导致 conda 记录的依赖关系不一致的情况。真要用 pip 装某个 conda 源里没有的包装完之后跑一下conda list看看有没有异常有的话重建环境是最省事的。4.4 装包时最常见的那个报错Windows 上装某些需要编译的包比如老版本的mysqlclient、某些统计库大概率会遇到error: Microsoft Visual C 14.0 is required. Get it with Microsoft Visual C Build Tools这个报错的意思是这个包的源码里包含 C 扩展pip 要从源码编译但它在你机器上找不到 C 编译器。三种解法按推荐程度排优先找有没有预编译好的 wheel 包。现在绝大多数主流库都有 Windows 的 wheelpip install 包名直接就能装上。出现这个错通常是因为包太老或者太冷门。装 Microsoft C Build Tools。去微软官网下载 Visual Studio Build Tools安装时勾选C 生成工具和 Windows SDK装完重启终端再试。注意是 Build Tools不是完整的 Visual Studio前者几个 G后者几十个 G。换 conda 装。conda 的源里很多包都是预编译好的二进制conda install 包名往往能绕开编译问题。这也是 conda 相比 pip 的一个实际优势。5. 多环境隔离一个项目一个环境这不是洁癖5.1 创建环境时那些参数的含义conda create -n myenv python3.10 numpy1.24 pandas -y拆开看-n myenv是环境名python3.10指定 Python 版本注意是等号不是后面可以跟一串包名和版本约束-y表示自动确认不需要交互。关于 Python 版本怎么选我的经验是选比最新版落后一到两个小版本的那个。比如现在最新是 3.13那 3.11 或者 3.12 是比较稳的选择。原因是科学计算和深度学习那一批库对最新 Python 的支持通常要滞后几个月你装了 3.13 发现 pytorch 装不上再退回来重装环境白白浪费半小时。3.10 到 3.12 这个区间几乎所有的库都覆盖到了。环境名也有讲究不要用中文、不要用空格、不要用纯数字。用项目名-py310这种格式挺清晰一眼能看出这是哪个项目的哪个 Python 版本。另外要注意conda 环境名也不能和已有的重名重名会直接报错。5.2 环境怎么导出、怎么在另一台机器上复现这是团队协作场景里必须掌握的一环。假设你在自己电脑上把环境调好了现在要交给同事或者部署到服务器上不可能让他手动一个个装。conda 环境导出conda activate myenv conda env export environment.yml生成的environment.yml大概长这样name: myenv channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - defaults dependencies: - python3.10.13 - numpy1.24.4 - pandas2.0.3 - pip: - some-pip-only-package1.2.3同事拿到之后一条命令重建conda env create -f environment.yml这里有个坑必须提醒默认导出的 yml 里带了 build string类似numpy1.24.4py310h5f9d8c6_0后面那一串它跟操作系统和 CPU 架构绑定跨平台Windows 导出的拿到 Linux 上用会直接失败。解决方法是导出时加--no-buildsconda env export --no-builds environment.yml如果项目只用了 pip 装的包那更简单用requirements.txtpip freeze requirements.txt pip install -r requirements.txt但要注意pip freeze会把环境里所有包都列出来包括你顺手装的、项目其实不需要的导出的文件会很长。实战中我更推荐手写一个精简版的requirements.txt只写直接依赖不写传递依赖numpy1.24 pandas2.0.3 scikit-learn版本约束用还是也是门学问。库本身开发用灵活应用项目要做部署用锁定避免某天自动升级上来一个不兼容的版本把线上搞崩。5.3 配一个 PyTorch 环境作为完整示例把上面这些串起来走一遍。假设我要配一个 GPU 版的 PyTorch 环境# 1. 创建环境 conda create -n torch-gpu python3.10 -y # 2. 激活 conda activate torch-gpu # 3. 安装 PyTorchCUDA 11.8 版本 conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia -y # 4. 验证 python -c import torch; print(torch.__version__); print(torch.cuda.is_available())第三条命令里的-c pytorch -c nvidia是指定频道意思是这次安装临时从这个频道找包不写进全局配置。装完之后第四步会输出类似2.1.0和TrueTrue表示 GPU 可用。如果只是想在 CPU 上跑跑把pytorch-cuda11.8换成cpuonlyconda install pytorch torchvision torchaudio cpuonly -c pytorch -y关键点CUDA 版本一定要和你的显卡驱动匹配。nvidia-smi命令右上角会显示驱动支持的最高 CUDA 版本你装的 pytorch-cuda 版本不能超过这个数。很多人装完发现torch.cuda.is_available()返回 False九成是版本对不上或者装成了 CPU 版。5.4 环境用旧了怎么清理环境这东西跟硬盘一样会越攒越多。查看占用conda info --envs删除不要的环境conda env remove -n 环境名清理 conda 的下载缓存和未使用的包这个能释放出相当可观的空间我清过一次腾出来十几个 Gconda clean -a-a是 all会清掉包缓存、索引缓存、tar 包等等执行时会让你确认。这个命令很安全不会碰你正在用的环境只是把下载过的安装包副本删掉。6. PyCharm 侧的提效配置装完不会用等于白装6.1 中文界面怎么设置官方有中文语言包插件不用去下那些来路不明的汉化补丁。路径Settings→Plugins→ 顶部切到Marketplace→ 搜索Chinese找到Chinese (Simplified) Language Pack点 Install装完重启 IDE。重启之后界面就是中文了。想切回英文在同一个插件页面把它禁用就行。提醒一句网上有很多所谓的汉化包是第三方做的安装方式是手动往 IDE 目录里丢文件。这类东西我的建议是别碰一来版本一升级就失效二来你不知道里面塞了什么。官方插件市场里的那个语言包已经覆盖得非常全了。6.2 值得装的几类插件插件这东西不用贪多装多了拖慢启动速度。按用途推荐几类代码质量类SonarLint能在你写代码的时候实时提示潜在的 bug 和坏味道比如未使用的变量、可能的空指针比等到运行时才发现问题早得多。AI 辅助类这两年 AI 编程助手插件很火能在编辑器里直接补全代码、解释报错、生成单元测试。主流的几家都有 PyCharm 插件装上之后在设置里填自己的 API Key 就能用。对新手来说让它解释一段看不懂的源码挺有效率。效率工具类Key Promoter X当你用鼠标点了某个功能它会弹窗告诉你这个操作的快捷键是什么用一两周就能把常用快捷键记住长期效率提升明显。可视化类Rainbow CSV看 CSV 文件的时候按列上色比默认的一片黑白好读太多。安装完之后建议重启一次 IDE有些插件需要重启才能完全生效。6.3 运行和调试配置PyCharm 里跑代码有三个层次很多人只用第一个其实后两个更省事第一层直接在编辑器里点绿色三角。适合临时跑个脚本但每次都要手动设工作目录比较随意。第二层Run/Debug Configurations。点右上角那个下拉框 →Edit Configurations→→Python在这里配置Script path入口脚本路径Parameters命令行参数比如--epochs 50 --lr 0.001Working directory工作目录这个非常关键。如果你的代码里用了相对路径读数据比如pd.read_csv(data/train.csv)那工作目录设不对就会直接报文件找不到。Environment variables环境变量比如设CUDA_VISIBLE_DEVICES0指定用哪块卡。配好之后可以保存多个配置切换起来点一下就行比每次改代码里的参数方便得多。第三层调试模式。点那个绿色小虫子图标启动就能打断点。打断点的方法是在行号右边点一下出现红点。程序跑到那一行会暂停这时候可以在Debug面板里看所有变量的当前值也可以在下方的Console里直接敲表达式求值比如df.shape看数据形状对不对。这套流程排查数据处理逻辑错误效率极高比到处print强太多。一个实用技巧调试的时候如果某个变量是个 DataFramePyCharm 专业版能直接在变量面板里以表格形式查看它社区版则是显示摘要。想快速看数据可以在断点处唤出 Console 敲df.head()。7. 常见问题速查与排查思路把这些年被问得最多的问题整理成一张表遇到问题先对着查能省下大量搜索时间。现象大概率原因处理方式PyCharm 里 import 报红命令行里正常解释器不是同一个环境检查Settings→Python Interpreter指向的 python.exe 路径命令行里 import 报红PyCharm 里正常终端没激活环境执行conda activate 环境名或先跑conda init终端启动时提示解释器未激活shell 未初始化 conda执行conda init bash或 powershell/zsh重开终端装包卡住不动走的默认国外源配好 conda 和 pip 的国内镜像conda install 报依赖冲突频道优先级或已有包版本冲突新建一个干净环境重装别在原环境硬解Windows 装包报 VC 14.0 required缺少 C 编译工具装 Build Tools或改用 conda 安装或找 wheel 包torch.cuda.is_available()返回 False装成了 CPU 版或 CUDA 版本不匹配nvidia-smi看驱动支持版本重装对应版本环境占硬盘越来越大缓存和旧环境堆积conda clean -a删掉不用了的conda env removePyCharm 提示找不到 Python解释器路径失效环境被删了重新在Settings里指定一个有效的解释器PowerShell 里 conda 命令不识别执行策略限制或未初始化Set-ExecutionPolicy RemoteSigned后跑conda init powershell关于 PowerShell 那个问题展开说一句因为这个报错信息很容易误导人。Windows 下装了 Anaconda 之后在 PowerShell 里敲conda activate经常报 无法加载文件...因为在此系统上禁止运行脚本。这不是 conda 装坏了而是 PowerShell 默认的执行策略不允许运行脚本文件。解决办法是用管理员身份打开 PowerShell执行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser然后再跑conda init powershell重开终端就正常了。CurrentUser这个 scope 只影响你自己不改全局比较稳妥。还有一个我踩过的坑值得单独说PyCharm 的 Terminal 默认用的 shell 可能和你系统终端不一样。Windows 下 PyCharm 内置终端早几年默认是 CMD新版本基本改成 PowerShell 了。如果你在里面敲 conda 命令提示不识别去Settings→Tools→Terminal里看Shell path可以手动改成cmd.exe或者指向 Anaconda Prompt 的快捷方式。这个改完要重启 IDE 生效。至于项目换电脑、环境重建这块我的固定流程是新机器上先装 Anaconda把渠道配好然后直接conda env create -f environment.yml如果是团队项目一般仓库里就有这个文件等它跑完再装 PyCharm打开项目指定解释器前后二十分钟能完全恢复工作状态。这个流程我用了几年了比在新机器上一个个pip install快得多也不会漏装。最后提醒一句关于环境的纪律每个新项目开一个新环境不要图省事在 base 或者随便一个老环境里装东西。你可能觉得建环境多花三分钟麻烦但等到某天两个项目的依赖打起来、互相覆盖版本、排查一整天的时候就知道这三分钟有多划算了。我自己现在的习惯是只要开始写超过一百行的东西第一件事就是conda create。这个习惯养成之后环境冲突这类问题基本就从我的日常里消失了。