
1. 为什么我劝你别再往 base 环境里装包了刚学 Python 那阵子我最常干的一件事就是打开终端pip install一路装到底。requests、numpy、pandas、opencv、pytorch 全塞进同一个环境当时觉得挺爽直到某天跑一个老项目发现 numpy 版本被新装的包顶掉了代码直接报AttributeError那一刻我才明白虚拟环境不是可选项是必修课。这篇内容就是把我这些年反复折腾出来的 vscode anaconda 搭建 Python 虚拟环境的完整流程写清楚。它解决的核心问题很具体让每个项目拥有独立的依赖空间互不干扰同时能在 vscode 里一键切换、断点调试、自动补全。适合刚入门 Python 的新手也适合被环境冲突折磨过的老手——尤其是那些同时要跑爬虫、数据分析、深度学习好几类项目的人。我下面讲的每一步都是实测能跑通的包括国内镜像源配置、conda 与 pip 的取舍、vscode 解释器识别不到环境的坑以及虚拟环境迁移这种进阶操作。你照着做基本能避开我当年踩过的 90% 的坑。2. 环境搭建前的整体思路与选型考量2.1 为什么是 Anaconda 而不是纯 Python venv很多人会问Python 自带的venv不也能建虚拟环境吗为什么还要装一个几个 G 的 Anaconda这个问题我认真对比过结论是看你的使用场景。纯venv的优势是轻量一个环境几十兆创建快。但它只管 Python 包管不了非 Python 的依赖。而 Anaconda 的 conda 是个跨语言的包管理器它能装 Python 包也能装 CUDA、cuDNN、MKL 这类底层库。你要跑 pytorch 或者做科学计算conda 能帮你把显卡驱动之外的依赖一次性配齐这是 venv 做不到的。另一个现实原因是国内网络。conda 可以配置国内镜像源下载大包比如 pytorch 的 GPU 版本动辄一两个 G时速度差距非常明显。pip 虽然也能换源但遇到需要编译的包conda 直接给编译好的二进制省去一堆编译报错。所以我的建议是做数据分析、机器学习、科学计算用 Anaconda做纯 Web 开发、轻量脚本venv 足够。这篇内容以 Anaconda 为主线因为它覆盖的场景更广新手装一次能管很久。2.2 conda 环境和 pip 环境到底啥关系这是新手最容易绕晕的地方我用一句话说清楚conda 环境是一个独立的文件夹里面有自己的 Python 解释器和 site-packages 目录pip 是装在这个环境里的一个工具往这个环境的 site-packages 里塞包。也就是说你激活了某个 conda 环境之后再用 pip 装包包是装进这个环境的不会污染别的环境。但有个坑如果你没激活任何环境直接pip install那包就装到 base 环境或者系统 Python 里去了。所以永远先conda activate 环境名再 pip 装包这个顺序不能乱。还有一点conda 和 pip 装的包偶尔会打架比如同一个包两边都装了不同版本。我的经验是能用 conda 装的优先用 condaconda 里没有的再用 pip。装之前可以先conda search 包名看看有没有。2.3 vscode 在整个链路里扮演什么角色Anaconda 负责“造环境”vscode 负责“用环境”。它俩是分工关系不是替代关系。vscode 本身只是个编辑器它通过 Python 插件去调用你指定的那个解释器。你在 vscode 里选哪个环境的 python.exe代码就跑在哪个环境里补全、调试、lint 也都跟着走。所以配置的核心动作就一个让 vscode 找到并选中你 conda 建好的那个环境。理解了这三者的关系后面的操作就都是顺理成章的。下面进入实操。3. Anaconda 安装与国内镜像源配置实操3.1 下载与安装的关键选项Anaconda 官网下载页面直接搜“anaconda download”就能找到选对应系统的安装包。Windows 用户下.exemacOS 下.pkgLinux 下.sh。文件比较大几百兆到一两个 G耐心等。安装过程中有几个选项必须注意我按 Windows 安装器举例Install for: Just Me别选 All Users。选 All Users 会装到C:\ProgramData下后面权限问题一堆尤其是你以后想手动改环境目录的时候。安装路径不要有中文和空格。默认是C:\Users\你的用户名\anaconda3这个就挺好。我见过有人装到D:\我的软件\anaconda结果 conda 各种路径报错排查半天。Add Anaconda3 to my PATH environment variable这个选项官方默认不勾理由是怕和系统里其他 Python 冲突。我的建议是先不勾装完之后用 Anaconda Prompt 来操作避免 PATH 混乱。等你熟悉了再考虑手动加。Register Anaconda3 as my default Python可以勾方便其他工具识别。macOS 和 Linux 用户装完之后需要手动初始化一下 shell运行conda init或者按安装提示把 conda 加到.bashrc/.zshrc里。装完关掉终端重开输入conda --version能看到版本号就说明成了。3.2 配置国内镜像源下载速度起飞装完第一件事就是换源不然conda install能慢到你怀疑人生。我常用的是清华源配置命令如下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配置完可以用conda config --show channels查看当前生效的源。如果哪天想恢复默认把--add换成--remove逐条删掉或者直接删掉用户目录下的.condarc文件。注意镜像源不是越多越好加太多会导致 conda 解析依赖时反复查询反而变慢。一般 main conda-forge 两个就够用了。pip 的源也顺手配一下在用户目录建一个pip文件夹里面放pip.iniWindows或pip.confmacOS/Linux内容[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple trusted-host pypi.tuna.tsinghua.edu.cn这样以后 pip 装包也是走国内源速度稳定。3.3 验证安装是否成功打开 Anaconda PromptWindows或终端macOS/Linux依次执行conda --version python --version conda info --envs第一条显示 conda 版本第二条显示 Python 版本Anaconda 自带一个 base 环境的 Python第三条列出所有环境默认只有一个 base。三条都正常说明安装没问题。如果conda命令找不到多半是 PATH 没配好。Windows 用户用开始菜单里的 Anaconda Prompt 就行它自带环境变量。macOS/Linux 用户检查一下 shell 配置文件里有没有 conda 的初始化块。4. 创建与管理 Python 虚拟环境4.1 创建环境时 Python 版本怎么选创建环境的命令是conda create -n 环境名 python版本号比如conda create -n py310 python3.10。这里的版本号选择有讲究不是越新越好。我的经验是看你的核心依赖支持到哪个版本。比如你要装 pytorch就去 pytorch 官网看它当前支持的 Python 版本范围你要用某个老爬虫框架可能只支持到 3.8。盲目上最新版 Python很可能遇到某个包还没出对应 wheel只能源码编译那过程相当痛苦。给几个常见场景的参考场景推荐 Python 版本理由深度学习pytorch/tensorflow3.9 - 3.11主流框架支持完善wheel 齐全数据分析pandas/numpy3.10 - 3.12新版本性能优化明显爬虫scrapy/requests3.9 - 3.11生态稳定第三方库兼容好老项目维护按项目要求别乱升级跟着原环境走创建时还可以一次性指定多个包比如conda create -n myenv python3.10 numpy pandas这样建环境的同时就把常用包装好省一步。4.2 激活、退出与查看环境创建完环境用conda activate 环境名激活。激活后命令行前面会出现(环境名)的提示这时候你敲的 python、pip 都是这个环境的。退出用conda deactivate。查看所有环境用conda info --envs或conda env list带星号的就是当前激活的。删除环境用conda remove -n 环境名 --all这个操作不可逆删之前确认一下里面没有你还需要的东西。我一般会先conda list -n 环境名看一眼装了啥重要的包记下来再删。实操心得环境名别用中文别用空格用英文加下划线或者短横线。我见过用中文环境名的激活时各种编码问题纯属给自己找麻烦。4.3 环境目录在哪能不能挪默认情况下conda 环境都建在 Anaconda 安装目录下的envs文件夹里。Windows 一般是C:\Users\用户名\anaconda3\envs\环境名。C 盘紧张的话可以改环境目录。方法是在.condarc文件里加一行envs_dirs指定到别的盘envs_dirs: - D:\conda_envs改完之后新建的环境就放到 D 盘了。但已经建好的环境不会自动挪需要手动迁移或者重建。我一般建议重建因为手动挪容易出路径问题重建反而干净。4.4 环境迁移的两种实用方案换电脑或者要把环境给别人用的时候迁移就派上用场了。有两种方式方式一导出环境文件conda env export environment.yml这个文件记录了环境里所有包和版本。对方拿到后执行conda env create -f environment.yml就能复现。缺点是它会把 conda 和 pip 装的包都写进去跨平台时可能因为平台特定的包导致失败。方式二只导出显式安装的包conda list --explicit spec-file.txt这个生成的是精确的下载链接适合同平台迁移速度快但跨平台不行。我的建议是跨平台用 environment.yml同平台批量部署用 spec-file.txt。导出前先conda activate到目标环境不然导的是 base。5. vscode 配置 Python 环境全流程5.1 安装 vscode 与必备插件vscode 官网下载对应系统的安装包一路下一步就行。装完第一件事是汉化在扩展市场搜“Chinese”装官方那个中文语言包重启后界面就变中文了。然后装 Python 相关插件这几个是必装的Python微软官方提供解释器选择、调试、运行、补全的核心功能。Pylance微软的类型检查和智能补全引擎比默认的 Jedi 强不少装 Python 插件时会提示一起装。Jupyter如果你用.ipynb做数据分析这个必须有。Black Formatter可选代码格式化团队协作时统一风格用。装插件的时候注意看发布者认准 Microsoft别装到山寨的。5.2 让 vscode 识别 conda 环境这是整个流程里最容易卡住的一步。装完 Python 插件后按CtrlShiftPmacOS 是CmdShiftP打开命令面板输入“Python: Select Interpreter”回车。正常情况下列表里会列出你所有的 conda 环境每个环境后面跟着路径。选中你要的那个vscode 左下角状态栏就会显示当前解释器。如果列表里没有你的 conda 环境八成是这几个原因conda 没初始化。在终端跑一次conda init然后重启 vscode。vscode 是从图标启动的没继承终端环境变量。解决办法是从已经激活 conda 的终端里用code .命令启动 vscode。Python 插件版本太老。更新一下插件。环境路径不在 conda 默认搜索范围。可以在设置里手动加python.condaPath指向你的 conda 可执行文件。我遇到最多的是第二种。Windows 上从开始菜单点 vscode 图标它拿不到 Anaconda Prompt 里的环境变量自然找不到 conda。养成从终端code .启动的习惯能省很多事。5.3 配置 settings.json 让体验更顺选中解释器后建议在项目根目录建一个.vscode/settings.json把项目相关的配置写进去这样换电脑或者团队共享时配置跟着项目走。一个常用的模板{ python.defaultInterpreterPath: D:\\conda_envs\\myenv\\python.exe, python.terminal.activateEnvironment: true, python.linting.enabled: true, python.linting.pylintEnabled: false, python.linting.flake8Enabled: true, python.formatting.provider: black, editor.formatOnSave: true, files.autoSave: afterDelay }几个关键项解释一下python.defaultInterpreterPath写死解释器路径避免每次打开项目都要重选。python.terminal.activateEnvironment打开终端时自动激活对应环境省得手动conda activate。editor.formatOnSave保存时自动格式化配合 black 用代码风格统一。注意路径里的反斜杠要写成双反斜杠\\这是 JSON 的转义要求写单反斜杠会解析失败。5.4 跑通第一个测试脚本配置完别急着写项目先建个test.py验证一下import sys print(sys.executable) print(sys.version) import numpy as np print(np.__version__)运行后看输出。sys.executable打印的路径应该是你选的那个 conda 环境的 python.exe不是 base 也不是系统 Python。如果 numpy 能正常导入并打印版本说明环境配置完全通了。如果 numpy 导入报ModuleNotFoundError说明这个环境里没装 numpy回到终端conda activate 环境名然后conda install numpy装上即可。这一步能帮你确认 vscode 用的到底是不是你以为的那个环境。6. 常见问题排查与避坑经验实录6.1 解释器选不对、包找不到的排查思路这是最高频的问题我整理成一个速查表现象可能原因解决办法列表里没有 conda 环境conda 未初始化 / vscode 未继承环境变量conda init后重启或从终端code .启动选了环境但导入包失败包装在别的环境 / 没装终端激活该环境conda list确认缺啥装啥终端里 python 和 vscode 不一致终端没自动激活环境检查python.terminal.activateEnvironment设置补全不工作Pylance 没装 / 解释器没选装 Pylance重选解释器调试时找不到模块调试配置里的环境不对检查.vscode/launch.json的 python 路径排查的核心思路就一条确认 vscode 当前用的解释器路径和你以为的那个环境路径是不是同一个。用sys.executable打印出来对比一目了然。6.2 conda 和 pip 混用的那些坑前面提过 conda 和 pip 会打架这里展开说几个具体的坑。坑一pip 装完 conda 不认。你用 pip 装了个包conda list里能看到但conda update的时候它不管这个包因为不是 conda 装的。这本身不算错但如果你之后用conda env export导出环境pip 装的包会以 pip 段的形式记录别人复现时可能出问题。坑二同一个包两边都装。比如 numpyconda 装了一个版本pip 又装了一个结果 import 的时候加载的是哪个取决于路径顺序非常混乱。解决办法是装之前先conda list 包名看看有没有有就别用 pip 再装。坑三pip 版本太老。conda 环境自带的 pip 可能版本较低装某些新包会失败。激活环境后先python -m pip install --upgrade pip升级一下。我的原则是优先 condaconda 没有再用 pip且 pip 装完记录一下装了啥方便以后排查。6.3 环境越建越多怎么管理用久了你会发现环境一大堆conda env list拉出来一长串自己都忘了哪个是干嘛的。我的管理习惯是环境名带用途前缀比如dl_pytorch、da_pandas、spider_scrapy一看就知道干啥的。定期清理三个月没用过的环境先conda list看看装了啥确认不需要就删掉。重要环境导出 environment.yml 存档放在项目目录里环境删了也能重建。base 环境保持干净只装 conda 自带的别往里塞项目依赖。还有个小技巧conda clean --all可以清理 conda 的缓存包能释放不少磁盘空间。我一般几个月跑一次C 盘能腾出好几个 G。6.4 几个我踩过的真实坑坑一中文路径。有次帮朋友配环境他把项目放在“桌面/我的代码/”下面结果 conda 创建环境时报编码错误。改成英文路径立马就好。所以项目路径、环境路径、Anaconda 安装路径全部用英文这是铁律。坑二杀毒软件拦截。Windows 上某些杀毒软件会把 conda 创建环境时的文件操作当成可疑行为导致环境创建到一半失败。遇到这种情况把 Anaconda 目录加到杀毒软件白名单里。坑三vscode 终端默认用 PowerShell。PowerShell 下conda activate有时候不生效需要先conda init powershell。或者干脆把 vscode 默认终端改成 Command Prompt在设置里搜terminal.integrated.defaultProfile.windows改一下。坑四环境激活了但 pip 装到别处。这种情况通常是环境变量里有多个 Pythonpip 命令指向了系统那个。解决办法是用python -m pip install代替pip install强制用当前环境的 Python 来装。7. 进阶让环境配置更专业的几个习惯7.1 用 environment.yml 管理项目依赖每个正式项目我都会在根目录放一个environment.yml内容大概长这样name: myproject channels: - defaults - conda-forge dependencies: - python3.10 - numpy1.24 - pandas2.0 - pip - pip: - requests2.31.0 - some-pip-only-package这样别人拿到项目一条conda env create -f environment.yml就能复现一模一样的环境。版本号我一般写死到小版本避免自动升级带来的意外。7.2 给不同项目配不同的 vscode 工作区vscode 的工作区功能很好用。你可以给每个项目单独存一个.code-workspace文件里面记录这个项目的解释器、调试配置、插件推荐。打开工作区环境自动切好不用手动选。配置方式是在项目里文件 - 将文件夹添加到工作区然后文件 - 将工作区另存为存成.code-workspace。里面可以写{ folders: [{path: .}], settings: { python.defaultInterpreterPath: D:\\conda_envs\\myproject\\python.exe }, extensions: { recommendations: [ms-python.python, ms-python.vscode-pylance] } }团队协作时把这个文件提交到仓库新人拉下来打开就能用省去一堆配置沟通。7.3 定期维护环境的几个命令最后分享几个我常用的维护命令养成习惯能省不少事conda update conda # 更新 conda 自身 conda update --all # 更新当前环境所有包慎用可能引入不兼容 conda clean --all # 清理缓存 conda list --revisions # 查看环境变更历史 conda install --revision N # 回滚到第 N 个版本conda list --revisions这个功能很多人不知道它记录了环境的每次变更装崩了可以回滚相当于环境的时光机。我有次升级某个包导致整个环境跑不起来就是靠这个回滚救回来的。环境搭建这件事说难不难说简单也容易踩坑。核心就三点装对 Anaconda、建对环境、让 vscode 选对环境。把这三步走扎实后面写代码就顺畅了。我这些年换过好几台机器每次重装都是按这个流程走基本半小时内能全部搞定。你要是卡在哪一步多半是路径或者环境变量的问题回头对照上面的排查表捋一遍基本都能解决。