在 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。

相关推荐
wdfk_prog38 分钟前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
未来侦察班1 小时前
一晃13年过去了,苹果的Airdrop依然很坚挺。
macos·ios·苹果vision pro
七夜zippoe1 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥1 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿2 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘2 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
Fcy6482 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满2 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠3 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio3 小时前
rk芯片驱动编写
linux·学习