pyenv虚拟环境管理python多版本和软件库的方法


Posted in Python onDecember 26, 2019

可能大家在日常工作中会遇到这么个问题,现在基本的linux系统都是自带老版本的python2.7.x版本,我又不想用老版本,但直接升级可能会出问题,或是依赖老版本的程序就运行不了,有没办法能安装3.x新版本的?

答案是有的,请使用pyenv,可以支持管理多个python版本,任意使用。

其实官方于2019年底将不再提供支持了,截至倒计时还有6天:https://pythonclock.org/

那有人可能会问,那在一个系统下,不同的库依赖不同的python版本,就比如说python2.x版本需要django1.0版本,python3.x版本需要django2.0版本,那这样系统只能装一个django版本,这又怎么解决呢?

答案是有的,pyenv自带的插件pyenv-virtualenv,创建两个虚拟环境,互相独立,各不影响。

实验环境:

linux系统:CentOS 7 x64

pyenv常用命令:

[python@localhost ~]$ pyenv install -l //查看可用的安装版本
[python@localhost ~]$ pyenv install 3.6.9 //在线安装python3.6.9版本
[python@localhost ~]$ pyenv virtualenv 3.6.9 py3 //创建虚拟环境,3.6.9为python版本,py3为别名
[python@localhost test]$ pyenv local 3.6.9 //进入目录,设置或显示本地python版本(本目录有效)
[python@localhost test]$ pyenv global system //设置或显示全局python版本
[python@localhost test]$ pyenv version //显示当前python版本
[python@localhost test]$ pyenv versions //显示可用的所有python版本
[python@localhost test]$ pyenv update //更新pyenv
[python@localhost ~]$ pyenv virtualenvs //查看所有虚拟环境
[python@localhost ~]$ rm -fr ~/.pyenv //卸载pyenv
[python@localhost ~]$ pyenv virtualenv-delete py3 //删除虚拟环境

创建用户名及密码:
说明:不要用root账户,养成习惯

[root@localhost ~]$ useradd python
[root@localhost ~]$ su - python
[python@localhost ~]$ echo python | passwd python --stdin

安装依赖组件:

[python@localhost ~]$ yum install gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel
zlib-devel bzip2-devel git curl

安装pyenv:

#方法1:在线安装
[python@localhost ~]$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

#方法2:为避免受制墙限制而无法在线安装,复制如下链接的shell脚本到本地pyenv.sh:
https://github.com/pyenv/pyenv-installer/blob/master/bin/pyenv-installer

[python@localhost ~]$ touch pyenv.sh //新建文件,把上面的shell代码贴进来,保存
[python@localhost ~]$ bash pyenv.sh

安装完成后,按照提示,设置系统环境变量,在 '.bashrc' 增加如下代码:

[python@localhost ~]$ vim .bashrc 

#最下面,新增如下脚本
export PATH="/home/python/.pyenv/bin:$PATH" 
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

重启shell,使路径更改生效:

[python@localhost ~]$ exec $SHELL

提前在官方下载python安装包并通过winSCP上传到centos目录下:

  • Python-3.6.9.tar.xz
  • Python-3.8.0.tar.xz
#在.pyenv目录下创建cache目录,已通过winSCP上传好
[python@localhost ~]$ cd .pyenv
[python@localhost .pyenv]$ mkdir cache
[python@localhost cache]$ ll
总用量 34224
-rw-rw-r--. 1 python python 17212164 12月 15 01:56 Python-3.6.9.tar.xz
-rw-rw-r--. 1 python python 17829824 12月 15 01:57 Python-3.8.0.tar.xz

备注:如果直接通过'pyenv install 3.6.9 '去安装,会很慢,因为要连接到国外。

开始安装

[python@localhost pkg]$ pyenv install 3.6.9 -vvv //-v 可以看到安装详细的过程
[python@localhost ~]$ pyenv install 3.8.0 -vvv //-v 可以看到安装详细的过程

创建项目文件夹:

#举个栗子:
 #1.Python目录,使用python3.6.9版本
 #2.My_django目录,使用python3.6.9版本
 #3.test目录,使用python3.8.0版本

[python@localhost Python]$ mkdir -pv network/Python/
[python@localhost Python]$ mkdir -pv network/My_django/
[python@localhost Python]$ mkdir -pv network/test/

创建虚拟环境,效果如下:

#Python目录:
[python@localhost ~]$ pyenv virtualenv 3.6.9 py3 //设置别名py3
[python@localhost Python]$ pyenv local py3
(py3) [python@localhost Python]$ pyenv version
py3 (set by /home/python/network/Python/.python-version)
(py3) [python@localhost Python]$  //左边看到(py3)说明已在虚拟环境中,是独立的

#My_django目录:
[python@localhost ~]$ pyenv virtualenv 3.6.9 py369 //设置别名py369
[python@localhost My_django]$ pyenv local py369
(py369) [python@localhost My_django]$ pyenv version
py369 (set by /home/python/network/My_django/.python-version)
(py369) [python@localhost My_django]$

#test目录:
[python@localhost ~]$ pyenv virtualenv 3.8.0 py380 //设置别名py380
[python@localhost test]$ pyenv local py380
(py380) [python@localhost test]$ pyenv version
py380 (set by /home/python/network/test/.python-version)
(py380) [python@localhost test]$

#验证效果
 #在My_django虚拟环境下安装pip install redis
 #其他虚拟目录没有redis
#My_django虚拟环境
(py369) [python@localhost My_django]$ pip list
Package  Version
---------- -------
pip    19.3.1 
redis   3.3.11 
setuptools 40.6.2
#Python虚拟环境
[python@localhost Python]$ pip list
Package  Version
---------- -------
pip    19.2.3 
setuptools 41.2.0

说明:你可以在每个项目安装所需要的软件版本,都是独立的,互不影响。

pyenv官方链接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python文件和目录操作方法大全(含实例)
Mar 12 Python
详解Python3中字符串中的数字提取方法
Jan 14 Python
Python定时任务工具之APScheduler使用方式
Jul 24 Python
Python利用requests模块下载图片实例代码
Aug 12 Python
python创建子类的方法分析
Nov 28 Python
使用matlab 判断两个矩阵是否相等的实例
May 11 Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 Python
python中温度单位转换的实例方法
Dec 27 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
Jan 07 Python
Python中的面向接口编程示例详解
Jan 17 Python
Python3爬虫RedisDump的安装步骤
Feb 20 Python
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 Python
Python嵌套函数,作用域与偏函数用法实例分析
Dec 26 #Python
python 串口读取+存储+输出处理实例
Dec 26 #Python
使用Python串口实时显示数据并绘图的例子
Dec 26 #Python
简单了解python字符串前面加r,u的含义
Dec 26 #Python
python关于调用函数外的变量实例
Dec 26 #Python
python3 实现调用串口功能
Dec 26 #Python
将python依赖包打包成window下可执行文件bat方式
Dec 26 #Python
You might like
如何用php生成扭曲及旋转的验证码图片
2013/06/07 PHP
PHP中使用虚代理实现延迟加载技术
2014/11/05 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
Bootstrap3 图片(响应式图片&图片形状)
2017/01/04 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
2018/04/10 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
2018/07/24 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
js实现图片区域可点击大小随意改变(适用移动端)代码实例
2019/09/11 Javascript
关于引入vue.js 文件的知识点总结
2020/01/28 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
原生JS实现音乐播放器的示例代码
2021/02/25 Javascript
python中实现定制类的特殊方法总结
2014/09/28 Python
Jupyter中直接显示Matplotlib的图形方法
2018/05/24 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
python右对齐的实例方法
2020/07/05 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
巴黎欧莱雅法国官网:L’Oreal Paris
2019/04/30 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
写好自荐信需做到的5要点
2014/03/07 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
王金山在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
2015教师节通讯稿
2015/07/20 职场文书
总经理致辞
2015/07/29 职场文书