多版本Python管理
pyenv 是一个用于管理多个 Python 版本的工具,特别适合在同一台机器上需要使用不同版本 Python 的开发者。以下是 pyenv 的使用教程,包括安装、配置和常用命令的介绍。
1. 安装pyenv
在MacOS上,可以通过Homebrew安装pyenv。
步骤:
-
安装Homebrew(如果尚未安装):
1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
安装
pyenv:1
brew install pyenv -
配置Shell环境
你需要在Shell配置文件(如.bashrc,.zshrc,.bash_profile等)中添加以下内容以确保pyenv正常工作:1
2
3
4echo '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配置文件:
1
source ~/.zshrc
2. 安装Python版本
pyenv 允许你安装任意版本的 Python,包括老版本、新版本和特定的测试版。
步骤:
-
列出可用的 Python 版本:
1
pyenv install --list这将列出所有可以安装的Python版本。
-
安装特定版本的Python:
例如,要安装Python 3.9.1:1
pyenv install 3.9.1
3. 设置Python版本
pyenv 允许你在全局、目录或项目中设置不同的Python版本。
步骤:
-
设置全局(系统范围内的)Python版本:
1
pyenv global 3.9.1这将设置系统使用Python 3.9.1作为默认Python版本。
-
设置本地(当前目录或项目)的Python版本:
进入项目目录,并设置该目录使用的Python版本:1
pyenv local 3.8.6这将在项目目录中创建一个
.python-version文件,指示该目录使用的Python版本。 -
设置Shell会话的Python版本:
如果你只想在当前Shell会话中使用某个版本的Python,可以使用:1
pyenv shell 3.7.9
4. 查看当前使用的Python版本
要查看pyenv正在使用的Python版本,可以使用:
1 | |
这个命令会显示当前Python的版本和它是如何选择的(全局、本地或Shell)。
5. 卸载Python版本
如果你不再需要某个Python版本,可以使用以下命令卸载它:
1 | |
6. 与pip配合使用
每个Python版本都会有独立的pip,安装和管理Python包时,pip对应的就是你使用的那个Python版本的包管理器。例如:
1 | |
7. 升级pyenv
要保持pyenv的最新状态,你可以使用Homebrew来升级:
1 | |
8. 常用命令总结
-
pyenv install <version>: 安装指定版本的Python。 -
pyenv uninstall <version>: 卸载指定版本的Python。 -
pyenv global <version>: 设置全局Python版本。 -
pyenv local <version>: 设置本地Python版本(针对当前目录)。 -
pyenv shell <version>: 设置当前Shell会话的Python版本。 -
pyenv versions: 列出所有已安装的Python版本。 -
pyenv version: 显示当前使用的Python版本。 -
查看Python的完整路径:
1
pyenv which python这个命令会显示当前使用的Python解释器的完整路径。
pyenv 如何指定 系统预装的 python 为全局解释器
pyenv默认会覆盖系统的Python解释器,但你可以将系统预装的Python版本设为全局解释器。具体步骤如下:
1. 查找系统预装的Python路径
在MacOS上,系统预装的Python通常位于以下路径:
- Python 2.x 版本:
/usr/bin/python - Python 3.x 版本:
/usr/bin/python3
你可以使用以下命令确认系统Python的路径:
1 | |
2. 将系统Python设置为全局解释器
使用pyenv global命令可以将系统预装的Python版本设置为全局解释器。
步骤:
-
创建一个版本名称为
system的Python解释器(pyenv内置):1
pyenv global system -
验证当前使用的Python版本:
使用以下命令验证是否已经切换到系统Python:1
pyenv version输出应类似于:
1
system (set by /Users/yourname/.pyenv/version)这表示系统预装的Python已经被设为全局解释器。
3. 确认切换成功
你可以运行以下命令,确认Python路径是否指向系统的Python版本:
1 | |
你也可以使用以下命令查看Python的完整路径:
1 | |
这将返回系统预装Python的路径,例如/usr/bin/python。
总结
通过设置pyenv global system,你可以让pyenv使用系统预装的Python版本作为全局解释器。这样做可以避免干扰系统的默认Python环境,同时仍然可以在需要时使用pyenv管理的其他Python版本。
通过 pyenv 来管理 Python版本环境的,但是当
1
2
3
4
5
6
7
8~ % pyenv versions
system
* 3.10.18 (set by /Users/lingxiao/.python-version)
~ % pyenv global system
~ % pyenv versions
system
* 3.10.18 (set by /Users/lingxiao/.python-version)
~ %pyenv global 之后没有设置成功,怎么处理?
使用
pyenv global system后,pyenv versions仍然显示* 3.10.18 (set by /Users/lingxiao/.python-version),说明你当前的 Python 版本仍然受 项目目录下的.python-version文件 影响。🔍 解释一下:
pyenv会按以下优先级确定使用哪个 Python 版本:
PYENV_VERSION环境变量(最高优先级)- 当前目录下的
.python-version文件(通过pyenv local设置)- 全局版本设置(
~/.pyenv/version,通过pyenv global设置)- 系统默认版本
你当前的输出:
1
2
3
4
5pgsql
复制编辑
* 3.10.18 (set by /Users/lingxiao/.python-version)说明:在你当前目录(
/Users/lingxiao或其父目录)下存在.python-version文件,内容为3.10.18,所以它覆盖了你设置的 global。✅ 解决方法:
方法一:删除
.python-version文件(推荐)
1
2
3
4
5bash
复制编辑
rm ~/.python-version然后再运行:
1
2
3
4
5bash
复制编辑
pyenv global system再验证:
1
2
3
4
5bash
复制编辑
pyenv versions应该就会看到:
1
2
3
4
5pgsql
复制编辑
* system (set by ~/.pyenv/version)
1 | |