再过60分钟你就能了解pyenv啦

516 阅读2分钟

一、pyenv是什么


在日常工作过程中,我遇到过这样的场景:老项目使用python3.6,新项目由于某些原因需要使用python3.7或更高版本,服务器资源有限,两个项目在同一个服务器中运行,需要相互独立,互不干扰。为了满足这样的需求,要在服务器上安装多个Python版本,但是linux上装一个新版本的python又不影响之前的版本还是有一点麻烦的,这个时候,pyenv这个利器就可以出马啦!

pyenv是一款解决Python多版本管理工具,通过pyenv我们可以同时编译安装部署多个Python环境,方便多python版本开发调试项目。详细介绍可以访问pyenv项目主页:github.com/pyenv/pyenv…

(本文实测环境为centos7)

二、下载pyenv


如果centos上面已经装好了git,且网络没有问题的话,可以直接通过git来下载

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

如果centos上没有git,或者不想安装git,或者网络上有不便之处,那么可以通过其他手段下载

图片.png 这样下载完成后会得到一个名为pyenv-master.zip的文件,我们可以把放到centos上的/root路径下,解压、重命名为.pyenv,当然路径和名字可以按照实际情况修改,要注意配置的时候不要写错。

三、配置环境变量


一般来说,路径和文件夹名字没有修改的话,执行下面的命令即可

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
source ~/.bashrc

意思是判断 pyenv 命令是否存在,如果存在的话,执行eval "$(pyenv init -)"命令,这时候我们就可以使用pyenv的命令了。可以pyenv --help查看帮助,如果有异常,可能是环境变量配置的问题,可以检查下路径和名字等。

四、安装依赖


yum install -y gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel

一般来说安装这些就够了,如果还有缺失的依赖直接yum安装即可啦

五、安装不同的python版本


下面的命令可以查看可安装的python版本

pyenv install --list

以我们想要安装的目标版本为3.7.0为例。

1.修改配置

众所周知,由于国内的网络原因,我们可能需要先去修改一下相关的配置文件,来加快下载速度。

vi /root/.pyenv/plugins/python-build/share/python-build/3.7.0

通过上述命令打开配置文件(如果路径和文件夹名字有修改就去修改后的位置寻找即可),修改地址:www.python.org/ftp ,改为华为云镜像地址: mirrors.huaweicloud.com ,修改好之后保存退出。

2.安装卸载

执行下面的install命令开始安装

pyenv install -v 3.7.0

如果需要卸载这个版本,可以执行uninstall命令

pyenv uninstall 3.7.0

执行pyenv versions就可以查看安装后可管理的python版本

六、检查和使用


pyenv安装完成后就可以开始使用了,在终端输入pyenv敲回车可以看到pyenv的常用命令。其中包括

图片.png

如需设置局部python版本,将Python版本写进当前目录下的.python-version 文件,这个版本号会覆盖全局的版本号,可以被PYENV_VERSION或者pyenv shell命令覆盖。

1.pyenv local

设置局部版本号,当前目录以及子目录,将使用该版本

pyenv local 3.7.0

取消局部版本号设定

pyenv local --unset

2.pyenv global

设置全局Python版本,版本号会写入~/.pyenv/version,它可以被局部版本号(通过.python-version)或者环境变量PYENV_VERSION覆盖。

设置全局版本,这个不能撤销,如果想取消,把版本设置为system即可

$ pyenv global 3.7.0

3.pyenv shell

设置shell启动时使用的Python版本,也可以通过环境变量 PYENV_VERSION进行设置。它会覆盖局部版本号和全局版本设置。

设置当前shell版本号,关闭shell后失效

$ pyenv shell 3.7.0

#取消当前shell版本号设定

$ pyenv shell --unset

4.pyenv which

安装完之后的文件在哪里呢,我们可以执行

pyenv local 3.7.0
pyenv which python3.7

会输出: /root/.pyenv/versions/3.7.0/bin/python3.7 找到了安装路径我们就可以做任何事情了,比如创建虚拟环境

/root/.pyenv/versions/3.7.0/bin/python3.7 -m venv ./venv

source进入虚拟环境后,就可以彻底的与其他环境隔离使用啦!