macOS 上应使用 pyenv 管理 Python 版本 + python -m venv 创建虚拟环境:先用 pyenv install 安装多版本,pyenv local 设定项目版本并生成 .python-version,再执行 python -m venv .venv 创建隔离环境,source .venv/bin/activate 激活,避免 virtualenv、系统路径修改及全局 pip 安装。
macos 上管理多个 python 版本共存的虚拟环境,关键不是“为每个版本单独建一堆 venv”,而是用 pyenv 控制解释器版本 + python -m venv 创建隔离环境 的组合方式。这样既能自由切换底层 python 版本,又能保证每个项目依赖干净独立。
先让 pyenv 管好 Python 解释器版本
所有虚拟环境都基于某个具体的 Python 二进制文件。所以第一步是装好几个版本,并能按需激活:
- 安装常用版本:比如
pyenv install 3.9.18 3.11.9 3.13.3 - 进项目目录后设局部版本:
cd myproject && pyenv local 3.11.9→ 自动生成.python-version文件 - 验证是否生效:
python --version应输出3.11.9,which python应指向~/.pyenv/shims/python
再用原生 venv 搭配当前版本建环境
pyenv 激活哪个版本,python -m venv 就用哪个版本创建环境,无需额外指定路径:
- 在项目根目录运行:
python -m venv .venv - 激活:
source .venv/bin/activate - 此时
which python变成./.venv/bin/python,pip list只显示本项目包 - 不同项目可各自用不同 Python 版本 + 各自的
.venv,互不干扰
避免常见混淆点
很多问题其实源于误操作或路径错乱:
仅使用 Python 将 Claw Code 虚拟化框架与 OpenClaw 集成,提供 184 种工具和 200 多条命令,用于安全分析和代码质量...
- 不要用
pip install virtualenv再调virtualenv -p python3.9—— 原生venv更轻量、更可靠 - 别手动改
/usr/local/bin/python3或/opt/homebrew/bin/python3的软链接,它们和 pyenv 无关 - 不推荐全局
pip install -g,容易跨项目污染;需要命令行工具(如black)时,建议装在对应项目的.venv里 - 检查
~/.zshrc中 pyenv 初始化代码是否在最后生效,顺序错误会导致which python仍指向系统路径
进阶:自动激活虚拟环境(可选)
如果希望每次进入项目目录就自动激活 .venv,可以加 direnv:
立即学习“Python免费学习笔记(深入)”;
- 安装:
brew install direnv - 在
~/.zshrc加:eval "$(direnv hook zsh)",再source ~/.zshrc - 进项目目录,新建
.envrc文件,内容为:source .venv/bin/activate - 首次运行
direnv allow授权,之后进出目录自动处理

















