核心是解释器版本不混、项目依赖不串:先装xcode命令行工具和homebrew编译依赖,再用pyenv管理多python版本,每个项目配独立venv虚拟环境,并通过pip-compile或poetry锁定依赖。

在 macOS 上搭 Python 依赖环境,核心就两点:解释器版本不混、项目依赖不串。系统自带的 /usr/bin/python3 是“只读系统组件”,不能装包;Homebrew 或 Anaconda 装的 Python 属于用户级,但依然建议用更细粒度的方案来隔离。
先装好底层工具链
所有后续操作都依赖编译能力,跳过这步大概率失败:
- 运行
xcode-select --install安装命令行工具(Clang、make 等) - 执行
sudo xcodebuild -license accept同意许可协议 - 用 Homebrew 装编译依赖:
brew install openssl readline sqlite3 xz zlib tcl-tk - M 系列芯片额外加两行到
~/.zshrc:export LDFLAGS="-L/opt/homebrew/opt/zlib/lib -L/opt/homebrew/opt/openssl/lib"export CPPFLAGS="-I/opt/homebrew/opt/zlib/include -I/opt/homebrew/opt/openssl/include"
用 pyenv 管理 Python 版本
它不改系统 PATH,靠 shell shim 动态路由,干净且可重现:
- 安装:
brew install pyenv - 写入配置(追加到
~/.zshrc):export PYENV_ROOT="$HOME/.pyenv"export PATH="$PYENV_ROOT/bin:$PATH"eval "$(pyenv init --path)"eval "$(pyenv virtualenv-init -)" - 重载:
source ~/.zshrc,再验证pyenv --version - 装几个常用版本:
pyenv install 3.9.18 3.11.9 3.12.5 - 设全局默认:
pyenv global 3.12.5;进项目目录后设局部版本:pyenv local 3.9.18(会自动生成.python-version)
每个项目配独立虚拟环境
venv 是 Python 官方标准,轻量、可靠、无需额外工具:
- 进项目根目录,运行:
python -m venv .venv(自动使用当前 pyenv 激活的版本) - 激活:
source .venv/bin/activate→ 终端提示符出现(.venv) - 此时
which python和which pip都指向.venv内路径,pip list只显示本项目包 - 退出用
deactivate;删除整个.venv文件夹即彻底清理 - 推荐加
direnv实现自动激活:brew install direnv,然后在项目根目录建.envrc,内容为source .venv/bin/activate
依赖声明与锁定(防环境漂移)
仅靠 venv 不足以保证跨机器一致,需锁定精确版本:
- 基础做法:用
requirements.in写直接依赖(如numpy==1.24.4),再用pip-compile生成带哈希的requirements.txt - 进阶推荐 poetry:
poetry init初始化,poetry add torch pandas添加包,poetry install自动建环境并锁定,poetry export -f requirements.txt > requirements.txt导出兼容格式 - 避免用
pip install --user,它把包装进~/Library/Python/x.y/lib/python/site-packages/,仍是用户级全局,无法按项目隔离
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











