在Linux上使用pyenv管理Python版本
解决痛点
0x00 前言
前一阵把Kali更新到了2023.3版,最近在练习过程中,某个环境需要用docker-compose来搭建。按照以前的经验还是一步一步安装,刚安装docker-composer就给报错了,看了一下报错问题,是某个支持包的许可已经废弃了,查了一下docker-compose的支持情况,发现对Python支持最大到3.9版本,而kali 2023.3的默认Python版本为3.11,导致了最终的安装失败。细想下来其实以前在寻找一些工具或者开发时候也会遇到这种由于Python版本不一致而导致的问题,索性就一次性解决,我在使用node时候,都是用nvm进行管理,那么Python肯定也有类似的工具了,经过查找和对比,最终决定使用pyenv这个工具。
0x01 安装pyenv
官方文档上提供了三种安装方式,第一种是使用Homebrew,第二种是自动安装脚本,第三种是clone仓库自己编译安装。由于我不想再引入其他可能存在的问题,所以直接排除了第一种和第三种。直接用自动安装脚本。
1 | curl https://pyenv.run | bash |
安装后会提示你配置环境变量,在~/.profile
和~/.zshrc
中添加下面的配置:
1 | export PYENV_ROOT="$HOME/.pyenv" |
在~/.zshrc
中额外添加下面的配置:
1 | eval "$(pyenv virtualenv-init -)" |
安装完成之后重启shell,接着使用pyenv --version
查看是否已经安装成功。
0x02 安装其他版本的Python
在安装完成之后,可以通过pyenv install <version>
方式来安装需要的版本。但是此时如果安装还是会报错,由于pyenv安装Python时候,使用编译的安装方式,所以还需要安装编译所需要的依赖。
1. Ubuntu/Debian/Mint
1 | sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \ |
其他操作系统依赖项参考这份文档
0x03 如何使用
例如:如果你想安装并python3.9版本,可以这样操作:
1 | pyenv install 3.9 |
上述命令使用pyenv安装Python3.9版,安装如果遇到问题,请参考这份文档
然后切换到3.9版本:
1 | pyenv global 3.9 |
大功告成。如果你想查看pyenv支持的所有版本可以使用pyenv install -l
。
在选择Python版本时候,还有其他几个命令可以参考:
pyenv shell <version>
在当前shell中生效pyenv local <version>
在当前目录(或其子目录)中生效pyenv global <version>
在当前用户下全局生效