在 mac 和 linux 系统上使用 pyenv

文章目录

  • mac上安装pyenv
      • [准备工作:检查 Shell 类型](#准备工作:检查 Shell 类型)
    • [第一步:安装 Homebrew (Mac 的软件包管理器)](#第一步:安装 Homebrew (Mac 的软件包管理器))
    • [第二步:安装 Python 编译依赖](#第二步:安装 Python 编译依赖)
    • [第三步:安装 Pyenv](#第三步:安装 Pyenv)
    • [第四步:配置 Zsh (最关键的一步)](#第四步:配置 Zsh (最关键的一步))
  • linux上安装pyenv
  • [使用pyenv(不区分 mac 和 linux)](#使用pyenv(不区分 mac 和 linux))
  • 常用操作速查表 (建议截图保存)
  • [conda 和 pyenv 换成重叠](#conda 和 pyenv 换成重叠)

mac上安装pyenv

这是 macOS 上目前最标准、最干净的 Python 环境配置方案。按照这个流程走,能完美避开权限问题和版本冲突。

准备工作:检查 Shell 类型

macOS (Catalina 10.15 之后) 默认使用 Zsh

在终端输入 echo $SHELL,如果输出 /bin/zsh,请严格按照下文操作。


第一步:安装 Homebrew (Mac 的软件包管理器)

Homebrew 是 Mac 终端的神器,没有它安装软件会很痛苦。

  1. 打开终端(Terminal)。
  2. 复制并运行以下官方安装命令:
bash 复制代码
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

过程中可能需要输入你的电脑开机密码(输入时屏幕不显示,输完回车即可),并按 Enter 确认。

⚠️ 重点注意(Apple Silicon M1/M2/M3 用户):

安装结束后,看终端底部的提示!如果出现 Next steps:,告诉你需要运行两行命令(通常是 echo ... >> /Users/xxx/.zprofile 之类的),请务必复制并运行那两行命令。否则 Homebrew 无法使用。

  1. 验证安装是否成功:
bash 复制代码
brew --version

第二步:安装 Python 编译依赖

Pyenv 是通过"下载源码 -> 本地编译"的方式安装 Python 的。为了防止编译报错(比如缺少 SSL 模块、无法解压等),我们需要先装好依赖库。

在终端运行:

bash 复制代码
brew install openssl readline sqlite3 xz zlib tcl-tk

第三步:安装 Pyenv

有了 Homebrew,安装 Pyenv 只需要一行命令:

bash 复制代码
brew install pyenv

第四步:配置 Zsh (最关键的一步)

安装完 Pyenv 只是把软件下载下来了,必须把它挂载到 Zsh 的启动流程里,才能拦截 python 命令。

请一次性复制下面这块代码,粘贴到终端并回车(这会自动把配置写入你的 ~/.zshrc 文件):

bash 复制代码
echo '' >> ~/.zshrc
echo '# Pyenv 配置' >> ~/.zshrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

让配置立刻生效:

bash 复制代码
source ~/.zshrc

linux上安装pyenv

Linux 和 macOS 唯一的最大区别在于:你需要手动安装一堆"编译依赖库"。 (macOS 的 Homebrew 通常帮你偷偷装好了,但在 Linux 上,如果你不装这些库,Pyenv 下载 Python 源码后会编译失败,或者编译出来的 Python 缺胳膊少腿,比如不能用 SSL,不能解压 zip 等。)

第一步:安装编译依赖(最关键的一步!)

在开始安装 Pyenv 之前,必须先安装 Python 构建所需的依赖。 请根据你的 Linux 发行版,复制下面的命令运行:

如果是 Ubuntu / Debian / Deepin / Mint:

sj 复制代码
sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

如果是 CentOS / Fedora / RHEL:

sh 复制代码
sudo dnf install make gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
openssl-devel tk-devel libffi-devel xz-devel

(如果这一步不做,你后面执行 pyenv install 3.10.4 时会报错,或者装好的 Python 无法使用 pip。)

第二步:一键安装 Pyenv

在终端执行如下命令,安装 pyenv

复制代码
curl https://pyenv.run | bash

第三步:配置 Shell(环境变量)

Linux 默认通常是 Bash,配置文件是 ~/.bashrc。 如果你在 Linux 上也安装了 Zsh,那就是 ~/.zshrc。

首先打开 ~/.bashrc文件:

sh 复制代码
vim ~/.bashrc

把下面这段代码加到你的配置文件底部:

sh 复制代码
# Pyenv 配置
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

然后添加完后,要使.bashrc文件配置生效,还要执行下面的命令:

sh 复制代码
source ~/.bashrc
# 或者如果你用 zsh
source ~/.zshrc

使用pyenv(不区分 mac 和 linux)

想要在本地项目使用pyenv,需要按照如下步骤:

sh 复制代码
// 用pyenv 安装具体的python版本
pyenv install 3.10.4

// 进入你的项目
cd you_project

//// 指定该目录使用当前 python 版本。此时会生成一个.python-verison文件
pyenv local 3.10.4

// 利用 python 自带的 venv,在本地创建.venv目录的虚拟环境。下面的 -m 是 module 模块的意思,用 python 自带的库实现。
python -m venv .venv

// 激活当前环境
source .venv/bin/activate

常用操作速查表 (建议截图保存)

操作 命令
安装新版本 pyenv install 3.11.5
查看已安装版本 pyenv versions
切换当前目录版本 pyenv local 3.11.5 (推荐)
切换全局默认版本 pyenv global 3.10.13
卸载某个版本 pyenv uninstall 3.8.10

conda 和 pyenv 换成重叠

如果你有和我如图一样的问题:

会导致 pyenv 和 conda 环境重叠。此时可以选择关掉 Conda 的自动启动,避免再次打架:

bash 复制代码
conda config --set auto_activate_base false

以后只在需要复杂数据科学库时,才手动输 conda activate。平时开发就用刚装好的 Pyenv。

相关推荐
杜子不疼.2 小时前
加载了cpolar的Reader 电子书管理工具远程使用体验
linux·人工智能
weixin_395448912 小时前
mult_yolov5_post_copy.h_cursor_0129
linux·网络·人工智能
A-刘晨阳2 小时前
Prometheus + Grafana + Alertmanager 实现邮件监控告警及配置告警信息
运维·云计算·grafana·prometheus·监控·邮件
是垚不是土2 小时前
OpenTelemetry+Jaeger+ES:分布式链路追踪实战部署
大数据·linux·运维·分布式·elasticsearch·全文检索
无垠的广袤2 小时前
【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:人脸检测
linux·人工智能·python·opencv·开发板
曹天骄2 小时前
Cloudflare CDN 预热全面实战指南(含全球 PoP 解析 + 预热覆盖模型)
运维·开发语言·缓存
三不原则2 小时前
AIOps 数据采集:日志/指标/链路数据的整合与标准化
运维
Dola_Zou2 小时前
如何用一套加密狗方案打通 Windows、Linux 与 macOS等,零成本实现跨平台交付?
linux·安全·macos·自动化·软件工程·软件加密
Wpa.wk2 小时前
Docker - 搭建镜像仓库- 了解
运维·经验分享·测试工具·docker·容器