必须用虚拟环境隔离依赖,否则全局pip install会污染site-packages引发版本冲突;venv适用于纯Python项目,conda则必需用于含CUDA、cuDNN等非Python依赖的机器学习项目。

conda 和 venv 不是可选项,而是必须项。不隔离,TensorFlow、PyTorch、scikit-learn 的版本冲突会在 5 分钟内让你的训练脚本报错。
为什么 pip install 会直接破坏另一个项目?
机器学习项目对底层依赖极其敏感:torch 2.0 要求 numpy ≥1.23,而旧版 lightgbm 又锁死在 numpy 1.21;tensorflow 2.15 依赖特定 protobuf 版本,升级后可能让 transformers 加载模型失败。
这些不是“可能出问题”,而是每次 pip install 都在改全局 site-packages —— 你装一个包,等于给所有共用系统 Python 的项目埋雷。
venv 够用吗?什么时候必须用 conda?
venv 足够隔离纯 Python 包,但机器学习项目往往依赖非 Python 组件:
• CUDA Toolkit、cuDNN、OpenBLAS 等二进制库,venv 完全不感知
• conda install pytorch 自动匹配 GPU 驱动版本,pip install torch 可能装错 cpu 或 cu118 变体
• conda 的 solver 能同时协调 Python 包 + 编译器 + 库版本,pip 只管 wheel 文件
- 轻量实验(如只用
scikit-learn+pandas):用python -m venv .venv即可 - 涉及 PyTorch/TensorFlow/GPU 加速:优先用
conda create -n ml-env python=3.9 - 团队部署或 CI 流程中需复现:
conda env export > environment.yml比pip freeze更可靠
requirements.txt 为什么在 ML 项目里经常失效?
pip freeze > requirements.txt 只记录已安装包的精确版本,但不记录:
• CUDA/cuDNN 这类系统级依赖
• torch 是从 pytorch 渠道还是 conda-forge 安装的(影响 ABI 兼容性)
• 某些包(如 xgboost)编译时链接的 OpenMP 版本
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
结果就是:你在本地跑通的 requirements.txt,在另一台机器上 pip install -r 后,import torch 报 undefined symbol: omp_get_num_threads —— 这不是代码问题,是环境没真正隔离。
立即学习“Python免费学习笔记(深入)”;
激活后仍调用错解释器?检查这三处
常见误操作导致看似激活实则无效:
• 在 VS Code 中未重启终端,或未点击右下角 Python 解释器路径切换到 .venv 或 conda 环境
• Jupyter notebook 内核未重新注册:python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
• 脚本开头写了 #!/usr/bin/env python,但没用 python 命令运行,而是直接 ./train.py —— 此时走的是系统默认 python,不是虚拟环境里的
sys.path 条目没被覆盖,或者漏掉一个 LD_LIBRARY_PATH 设置,GPU 训练就可能静默降级到 CPU,还查不出原因。

















