安装多个版本的Python3是一种常见需求,特别是在开发过程中,由于不同项目可能依赖于不同的Python版本。使用pyenv可以让你在同一台机器上安装并管理多个Python版本。pyenv
通过改变环境变量来切换全局Python版本,同时它也支持项目级别的Python版本管理。
如何安装
pyenv
是一个用于管理多个 Python 版本的工具,它使得在同一台机器上轻松切换和管理不同的 Python 版本成为可能。下面是使用 pyenv
的一些基本步骤:
1. 安装 pyenv
在大多数 Linux 和 macOS 系统上,你可以通过以下命令安装 pyenv
:
1 | curl https://pyenv.run | bash |
之后,你需要将 pyenv
添加到 shell 环境中。在 ~/.bashrc
, ~/.bash_profile
, ~/.zshrc
等文件中添加以下内容:
1 | export PATH="$HOME/.pyenv/bin:$PATH" |
然后重新加载 shell 配置文件:
1 | source ~/.bashrc # 如果你使用的是 Bash |
2. 安装 Python 版本
使用 pyenv install
命令来安装你需要的 Python 版本。例如:
1 | pyenv install 3.9.6 |
安装pyenv
之后,可以通过pyenv install 3.x.x
来安装不同版本的Python。其中“3.x.x”是你需要安装的Python版本号。安装完成后,可以使用pyenv global 3.x.x
命令来设置系统级别的Python版本,或者使用pyenv local 3.x.x
为当前目录设置特定的Python版本,这使得在不同项目之间切换Python版本变得非常容易。
如何使用
1. 列出已安装的 Python 版本
使用 pyenv versions
命令可以查看当前已安装的 Python 版本:
1 | pyenv versions |
2. 设置全局 Python 版本
你可以使用 pyenv global
命令设置一个全局的 Python 版本,这个版本将用于系统的默认 Python 解释器:
1 | pyenv global 3.9.6 |
3. 为某个项目设置本地 Python 版本
你还可以在某个项目目录下为该项目设置专用的 Python 版本:
1 | cd your_project_directory |
这样,在该目录下的所有 Python 操作都会使用指定的版本。
如果在你的项目内,出现 python
和 python3
都指向同一个 Python 版本的原因,是因为 pyenv
在项目中优先使用 .python-version
文件来设置 Python 版本,而这个文件的配置同时影响了 python
和 python3
。
解决方案:
1 | pyenv local 2.7.18 3.9.19 |
这样,python
会默认使用第一个版本(2.7.18),而 python3
会使用 Python 3.9.19。
还可以 使用 pyenv shell
临时设置版本
1 | pyenv shell 2.7.18 3.9.19 |
此时:
python
会指向 2.7.18python3
会指向 3.9.19
4. 使用不同的 Python 版本
如果你需要临时切换到另一个 Python 版本,可以使用 pyenv shell
命令:
1 | pyenv shell 2.7.18 |
这个设置只会在当前的 shell 会话中生效。
5. 卸载 Python 版本
如果你不再需要某个 Python 版本,可以使用 pyenv uninstall
命令来卸载它:
1 | pyenv uninstall 3.9.6 |
6. 使用 pyenv
管理虚拟环境
pyenv
还可以与 pyenv-virtualenv
插件一起使用来管理虚拟环境。你可以使用 pyenv virtualenv
命令来创建和管理虚拟环境。
例如,创建一个基于 Python 3.8.10 的虚拟环境:
1 | pyenv virtualenv 3.8.10 my-virtual-env |
激活该虚拟环境:
1 | pyenv activate my-virtual-env |
7. 常见问题和调试
如果在安装 Python 版本时遇到问题,通常是因为缺少依赖项。你可以参考 pyenv
提示的信息安装必要的依赖项。
通过这些基本步骤,你就可以开始使用 pyenv
来管理你的 Python 环境了。
在 pyenv
中,你可以使用以下命令来查看可以安装的 Python 版本列表:
1 | pyenv install --list |
这将列出所有可以通过 pyenv
安装的 Python 版本,包括官方发布的版本、开发版本、Anaconda 版本等。你可以从列表中选择你想要安装的版本。
如果你只想查看某个特定版本的可用版本,例如 3.8
,你可以使用以下命令:
1 | pyenv install --list | grep 3.8 |
这将只显示与 3.8
相关的版本。
拓展
demjson 报错 use_2to3 is invalid
在配置 Python3 环境时,安装 demjson 2.2.4 出现以下报错:
1 | error in demjson setup command: use_2to3 is invalid |
网上搜着查看了一下报错的位置,发现是由于 demjson 2.2.4 兼容 Python2 和 Python3 ,当安装环境为 Python3 时,有一部分代码需要做相应的转换, 而 Setuptools 从版本 58.0.0 开始不再支持 2to3 的 builds ,所以导致 demjson 2.2.4 安装后不再可用,需要降级 setuptools 版本即可解决
1 | pip install --upgrade setuptools==57.5.0 |
强制安装(不推荐)
你可以使用 --break-system-packages
选项强制安装包,但这可能会导致系统的 Python 环境出现问题,不推荐使用:
1 | pip3 install yagmail --break-system-packages |
其他方案
js2py替换demjson
1 | import js2py |
brew安装的版本抢占了pyenv版本
确认 pyenv
的设置在你的 shell 环境中优先
确保 pyenv init
在你的 shell 配置文件(例如 .bashrc
、.zshrc
或 .bash_profile
)中被正确初始化。在末尾添加以下内容:
1 | Enable pyenv automatically |
保存并关闭文件后,运行以下命令重新加载验证是否正确配置:
1 | which python3 |
你应该看到路径类似于:
1 | /Users/your-username/.pyenv/shims/python3 |
接着检查 Python 版本是否由 pyenv
控制:
1 | python3 --version |
输出应该是你在 pyenv
中设置的版本,例如 3.9.19
其他问题
安装包错误
1 | error: externally-managed-environment |
错误表明在使用一个 Homebrew 管理的 Python 环境。Homebrew 出于系统完整性考虑,不允许直接使用 pip
全局安装包。
解决方案
禁用 Homebrew 限制 (不推荐)
如果你希望直接全局安装 Python 包,可以通过以下方法禁用 Homebrew 的限制:
临时禁用限制:
1
pip install your_package --break-system-packages
永久禁用限制:
编辑或创建~/.config/pip/pip.conf
文件,添加以下内容:1
2[global]
break-system-packages = true
注意:禁用限制可能会破坏 Homebrew 的安装环境,不建议长期使用。