Python多版本管理---Pyenv

本笔记出处:马哥教育笔记

pyenv安装方式

1、安装git
# yum install git -y 

2、安装依赖
# yum -y install gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2devel 

3、创建普通用户
# useradd python 
# echo python | passwd python --stdin 

请用普通用户安装!请用普通用户安装!请用普通用户安装!
4、使用python用户登录后安装Pyenv
Pyenv官网 https://github.com/pyenv/pyenv Pyenv-installer插件 https://github.com/pyenv/pyenv-installer
$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
下载的 pyenv-installer 是一个shell脚本。
注意:
1.在 https://github.com/pyenv/pyenv-installer 有安装文档
2. 如果curl出现 curl: (35) SSL connect error ,是nss版本低的问题,更新它。当前nss版本只有3.15。 可能需要配置一个有较新包的yum源

# /etc/yum.repos.d/*.repo
[updates] 
name=CentOS-Updates 
baseurl=https://mirrors.aliyun.com/centos/6/os/x86_64/ gpgcheck=0

5、加载环境变量
vim   ~/.bashrc:
-----------
export PATH="/home/python/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
[python@node1 ~]$ vim ~/.bashrc
[python@node1 ~]$ source  ~/.bashrc:
Pyenv的使用
python 版本及path路径 
$ python --version 
$ python -V 
$ echo $PATH

pyenv 命令 
$ pyenv
$ pyenv help install 列出所有可用版本 
$ pyenv install --list
在线安装指定版本 
$ pyenv install 3.5.3 
$ pyenv versions 这样的安装可能较慢,为了提速,可是选用cache方法。 

使用缓存方式安装 在~/.pyenv目录下,新建cache目录,放入下载好的待安装版本的文件。 不确定要哪一个文件,把下载好的的xz、gz、tgz这几个文件都放到cache目录中去。 

$ pyenv install 3.5.3 -v
为了方便演示,请用客户端再打开两个会话窗口。 提前安装备用 
$ pyenv install 3.6.4
pyenv的python版本控制
version 显示当前的python版本 
versions 显示所有可用的python版本,和当前版本 

global 全局设置 
$ pyenv global 3.5.3 
可以看到所有受pyenv控制的窗口中都是3.5.3的python版本了。 
这里用global是作用于非root用户python用户上,如果是root用户安装,请不要使用global,否则影响太大。
比如,这里使用的CentOS6.5就是Python2.6,使用了global就成了3.x,会带来很不好的影响。 
$ pyenv global system


shell 会话设置 
影响只作用于当前会话 
$ pyenv shell 3.5.3
local 本地设置 使用pyenv local设置从当前工作目录开始向下递归都继承这个设置。 
$ pyenv local 3.5.3

取消local设置 
$ pyenv local --unset 

Virtualenv 虚拟环境设置 
为什么要使用虚拟环境?
因为刚才使用的Python环境都是一个公共的空间,如果多个项目使用不同Python版本开发,或者使用不同的Python版本部署运行,或者使用同样的版本开发的但不同项目使用了不同版本的库,等等这些问题都会带来冲突。

最好的解决办法就是每一个项目独立运行自己的“独立小环境”中。

使用插件,在plugins/pyenv-virtualenv中 
$ pyenv virtualenv 3.5.3 mag353 
使用python 3.5.3版本创建出一个独立的虚拟空间。

$ pyenv versions 
* system (set by /home/python/.pyenv/version)  
   3.5.3  
   3.5.3/envs/mag353  
   mag353

删除:
[python@node1 web]$ pyenv --help
[python@node1 web]$ pyenv uninstall mag353

能在版本列表中显示,就和3.5.3是一样的,就是一个版本了。 
真实目录在~/.pyenv/versions/下,以后只要使用这个虚拟版本,包就会按照到这些对应的目录下去,而不是使用 3.5.3。

[python@node ~]$ mkdir -p magedu/projects/web
[python@node ~]$ cd magedu/projects/web/ 
[python@node web]$ pyenv local mag353 (mag353) 
[python@node web]$ cd .. 
[python@node projects]$ cd web/ 
(mag353) [python@node web]$
pip 通用配置 
pip 是Python的包管理工具,3.x的版本直接带了,可以直接使用。 和yum一样为了使用国内镜像,如下配置。 

Linux系统 
$ mkdir ~/.pip 
配置文件在~/.pip/pip.conf
[global] 
index-url=https://mirrors.aliyun.com/pypi/simple/ 
trusted-host=mirrors.aliyun.com

在不同的虚拟环境中,安装redis包,使用pip list看看效果。 
$ pip -V
pip install pkgname 命令,是以后经常要使用的安装python包的命令
安装ipython 
ipython 是增强的交互式Python命令行工具
$ pip install ipython 
$ ipython
Jupyter 是基于WEB的交互式笔记本,其中可以非常方便的使用Python。 
安装Jupyter,也会依赖安装ipython的
$ pip install jupyter 
$ jupyter notebook help 
$ jupyter notebook --ip=0.0.0.0 --no-browser 
$ ss -tanl
导出包 
虚拟环境的好处就在于和其他项目运行环境隔离。每一个独立的环境都可以使用pip命令导出已经安装的包,在另 一个环境中安装这些包。

pyenv离线安装 
首先从github上克隆项目
(mag353) [python@node web]$ pip freeze > requirement 
(mag353) [python@node web]$ mkdir ~/magedu/projects/pro1 
(mag353) [python@node web]$ cd ~/magedu/projects/pro1 
[python@node pro1]$ pyenv install --list [python@node pro1]$ pyenv install 3.6.4 
[python@node pro1]$ pyenv virtualenv 3.6.4 mag364
[python@node pro1]$ pyenv local mag364 
(mag364) [python@node pro1]$ mv ../web/requirement ./ 
(mag364) [python@node pro1]$ pip install -r requirement
pyenv离线安装 
首先从github上克隆项目
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv 
$ git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv 
$ git clone https://github.com/pyenv/pyenv-update.git ~/.pyenv/plugins/pyenv-update 
$ git clone https://github.com/pyenv/pyenv-which-ext.git ~/.pyenv/plugins/pyenv-which-ext

可以把克隆的目录打包,方便以后离线使用。

$ vim ~/.bash_profile 
export PATH="/home/python/.pyenv/bin:$PATH" 
eval "$(pyenv init -)" 
eval "$(pyenv virtualenv-init -)"
 
$ source ~/.bash_profile
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容