Ubuntu下使用 pyenv和virtualenv管理多版本python及版本项目

今天遇到了这么一个问题,在一台服务器上,已经安装了python2.7 和 python3.5 。且服务器中已经运行着两个相关Python版本的程序。今天,我想把一个新的项目放到此服务器上,但这个项目要求的python最低版本是3.6。

为了不影响其他已经在运行的项目,我尝试了使用virtualenv去做隔离,但后来了解到,virtualenv只是在管理已有的python及python项目,无法去创建一个新的python版本的环境。难道说,还需要我在保留python3.5 的情况下,再去安装一个python3.6吗?事实上,我并不清楚python3.5和python3.6能否共存,但我又不敢轻易去尝试安装,因为我怕影响到已经运行的程序。

再后来,我了解到pyenv+virtualenv可以帮我解决上面的问题,而且这么做,可以将以后的每个项目的环境独立出来。下面记录使用过程:


一 安装pyenv

【方式1】使用命令行进行自动安装(可能会因为网络原因(你懂得)无法顺利安装,直接看方式2吧)

curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

安装后,会在终端窗口中显示以下三行:

export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

 将上面的三行,复制下来,找到你的.bashrc 文件,粘贴到末尾,然后更新环境变量

source ~/.bashrc

或者使用命令,直接更新到环境变量:

export PATH="~/.pyenv/bin:$PATH" >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

【方式2】 从github上拉取安装,这种方式需要单独安装 virtualenv

安装pyenv并设置环境

mkdir ~/.pyenv
git clone git://github.com/yyuu/pyenv.git ~/.pyenv  
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc  
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc  
echo 'eval "$(pyenv init -)"' >> ~/.bashrc  
exec $SHELL -l 

安装virtualenv并设置环境

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
exec $SHELL -l 

重载环境配置文件 

source ~/.bashrc

三 检查是否安装成功

 pyenv -v

如果出现版本号,代表安装成功。


下面是怎么用pyenv和virtualenv 去安装新的python版本及创建新的项目,我这里使用 python3.7.5 做为例子

1 查看现在已有的python版本

pyenv versions

这条命令会列出使用pyenv安装的所有的python版本,但第一次的时候,这里是没有版本信息的,就像下面这样:

root@xxxxx:~# pyenv versions
* system (set by /root/.pyenv/version)

2 查看可安装的python版本列表

pyenv install --list

这条命令会列出很多pyhon版本,看一下你想安装的版本在不在里面,如过在,继续往下执行

3 安装python3.7.5

安装 3.7.5 版本

pyenv install 3.7.5

可能需要等待一会,我安装的时候,等了挺久的。可能还有下载不下来的情况。你还可以去官网下将Python-3.7.5.tar.xz文件下载下来,放到~/.pyenv/cache 目录中,然后再执行上面的语句安装,稍等会就可以了。

4 检查是否安装成功

执行 1 中的指令,看是否列出了 3.7.5 ,如果有就可以了。

root@iZ2zegzvor1tqtclfu59opZ:~# pyenv versions
* system (set by /root/.pyenv/version)
  3.7.5

5 创建新的项目

进入项目目录创建项目文件夹,我下面举个例子

cd /home/
mkdir pyenv_demo
cd pyenv_demo

为这个项目设置python版本

pyenv local 3.7.5

检查当前项目python版本,还是在 pyenv_demo 这个路径上执行

python

可以看到,当前项目python已经是 3.7.5 了。

在切到其他路径执行命令,会看到结果是3.5 或2.7

以上操作会在某些情况下,未达到预期,我先找找原因再来更新。

到了这一步,环境已经可以使用了,但是如果一台服务器上有多个项目,又不想共用一个3.7.5的环境,这时候就需要创建虚拟环境将他们隔离开了。

6 使用虚拟环境

为此项目创建虚拟环境,取名为env_375

pyenv virtualenv env375

创建完成后,再次查看pyenv安装的版本,会发现出现了虚拟环境

pyenv versions

3.7.5

3.7.5/envs/env375

env375

接下来就是激活环境,两种方式激活环境和退出环境,选择一种激活即可

pvenv local env375
pyenv local --unset # 对应的退出环境
pyenv activate env375
pyenv deactivate env375 # 对应的退出环境

2020-05-19 更新:

使用pyenv安装指定版本的python时,报错疑似缺少库

Installing Python-3.5.0...
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-build-problems

跳转到 https://github.com/pyenv/pyenv/wiki/Common-build-problems 查看原因,按照文档说明的进行安装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值