macOS 上管理不同版本的python

在 macOS 上管理不同版本的 Python,可以使用类似于 nvm 的工具,推荐以下几种方法:

1. pyenv(推荐)

pyenv 是最常用的 Python 版本管理工具,功能类似 nvm,支持安装、切换不同 Python 版本。

安装 pyenv
bash 复制代码
# 使用 Homebrew 安装
brew install pyenv

# 配置 shell 环境(添加到 .zshrc 或 .bash_profile)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init --path)"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

# 重新加载 shell
source ~/.zshrc
使用 pyenv
bash 复制代码
# 查看可用的 Python 版本
pyenv install --list

# 安装特定版本
pyenv install 3.10.12
pyenv install 3.12.1

# 查看已安装的版本
pyenv versions

# 设置全局默认版本
pyenv global 3.12.1

# 设置当前目录默认版本(会创建 .python-version 文件)
pyenv local 3.10.12

# 设置当前 shell 会话版本
pyenv shell 3.9.18

# 卸载版本
pyenv uninstall 3.8.18

# 查看当前使用的版本
pyenv version

2. conda(适合数据科学)

Anaconda/Miniconda 提供了 conda 包管理器,也支持环境隔离和版本管理。

安装 Miniconda
bash 复制代码
# 下载并安装 Miniconda
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
bash Miniconda3-latest-MacOSX-x86_64.sh

# 配置环境变量
echo 'export PATH="$HOME/miniconda3/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
使用 conda
bash 复制代码
# 创建新环境并指定 Python 版本
conda create -n py310 python=3.10
conda create -n py312 python=3.12

# 激活环境
conda activate py310

# 退出环境
conda deactivate

# 列出所有环境
conda env list

# 删除环境
conda env remove -n py310

3. asdf(多语言版本管理)

asdf 支持管理多种编程语言版本(Python、Node.js、Ruby 等)。

安装 asdf
bash 复制代码
# 使用 Homebrew 安装
brew install asdf

# 配置到 shell
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ~/.zshrc
source ~/.zshrc

# 安装 Python 插件
asdf plugin add python
使用 asdf
bash 复制代码
# 查看可用版本
asdf list-all python

# 安装版本
asdf install python 3.12.1

# 设置全局版本
asdf global python 3.12.1

# 设置当前目录版本
asdf local python 3.10.12

# 查看已安装版本
asdf list python

# 查看当前版本
asdf current python

注意事项

  1. 环境变量:确保工具的环境变量配置正确,避免与系统 Python 冲突
  2. pip 使用 :使用 pip install 时,注意当前激活的 Python 版本
  3. 虚拟环境 :结合 venvvirtualenv 使用,可以更好地隔离项目依赖
  4. 系统 Python:尽量不要修改或删除系统自带的 Python,可能影响系统功能

pyenv 是最接近 nvm 使用体验的工具,推荐作为主要的 Python 版本管理方案。

相关推荐
deepseek2310 小时前
Google Gemini Agentic Video 上线:88% 少 token 的主动取样如何改写长视频理解
python·多模态·ai agent·gemini·视频理解
秋田君10 小时前
Qt_串口编程
开发语言·qt
worilb11 小时前
Java/JVM 常见诊断文件对比
java·开发语言
ttwuai11 小时前
Go 后台初始化 MySQL 脚本失败怎么办?先查 DDL 还是生成配置
开发语言·mysql·golang
Zane199411 小时前
只重写了 __eq__,为什么类突然变得不可哈希了?常用魔法方法大盘点
后端·python
2601_9628857211 小时前
如何用 Python 做 A 股全市场扫描选股?(多条件筛选实战)
开发语言·python
零域码客11 小时前
一文掌握 jQuery + Flask 全栈核心知识点(前端交互 + 后端接口 + 前后端联调)
前端·python·ajax·flask·jquery·前后端联调·web全栈
BYSJMG11 小时前
计算机毕设选题做什么好?基于大数据的用户美食数据分析与可视化,PySpark预处理+ECharts大屏,含Isolation Forest异常检测算法
大数据·python·信息可视化·数据分析·spark·课程设计·美食
奈斯先生Vector11 小时前
AIGC 视频生成换个拍法:用 Kling Video 把一张人物图变成可剪辑的短故事
开发语言·人工智能·windows·python·aigc·音视频
卷无止境11 小时前
当"精简主义"住进AI编程助手:Ponytail深度解读
后端·python·fastapi