分享一下pyenv的使用心得
pyenv作用:使用系统同时支持多个python版本的运行,生产环境中不要轻易升级当前python版本,因为升级有可能影响到当前生产系统。
安装pyenv
1.安装git
# yum -y install git
2.安装python依赖
# centos6:yum -y install gcc make patch gdbm-devel sqlite-devel readline-devel zlib-devel bzip2-devel
# centos7:yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
3.创建用户python
避免用root用户安装程序
# useradd python
3.1 切换用户
# su - python
4.使用python用户登录后安装pyenv
# sudo curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer|bash
若出现curl:(35) SSL connect error, 是nss版本低的问题。
# sudo yum update nss
5.复制环境变量到.bash_profile
# echo 'export PATH="/home/python/.pyenv/bin:$PATH"' >>~/.bash_profile
# echo 'eval "$(pyenv init -)"' >>~/.bash_profile
# echo 'eval "$(pyenv virtualenv-init -)"' >>~/.bash_profile
# sourse ~/.bash_profile
命令使用
1.列出所有可安装的版本
# pyenv install -l
2.在线安装python
# pyenv install 3.6.6 -v
2.1 用户缓存离线安装python
# cd ~/.pyenv/ && mkdir cache
# cd cache
传输下载的python3.6.6包到该目录,pyenv会找该目录是否有安装包,有的话直接编译安装
然后执行安装编译
# pyenv install 3.6.6 -v
3.查看当前pyenv环境的python版本
# pyenv version
3.1 查看所有pyenv管理的环境的python版本,星号为当前使用的版本。
# pyenv versions
4.设定pyenv全局设置版本,因为是全局影响所以不建议用。
# pyenv global 3.6.6
4.1 改回来
# pyenv global system
5 只影响当前用户shell的会话,用在临时场景,生产也不用。比global安全。退出当前会话后,就恢复了。
# pyenv shell 3.6.6
6 针对当前目录及子目录做python环境的绑定,切换到其他目录后会变化。
# cd /tmp/test1
# pyenv local 3.6.6
7 虚拟环境做python版本、python扩展包的隔离, 生产推荐用
通过3.6.6创建虚拟环境vir366
# pyenv virtualenv 3.6.6 vir366
# cd /tmp/test2
# pyenv local vir366
所有安装在该目录下(vir366环境)的包都会独立出来,不会影响原来的环境。
8 导出一个python环境下相应的python包目录
pip freeze > requirement.txt
8.1 将python包导入到一个python环境
pip install -r ./requirement.txt
8.2 查看包
pip list
9 pyenv离线安装方法
# su - python
# git clone http://github.com/pyenv/pyenv.git ~/.pyenv
# git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
# git clone http://github.com/pyenv/pyenv-update.git ~/.pyenvplugins/pyenv-update
# git clone http://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
9.1 将以上离线安装打包
# tar -cvf ./pyenv.tar.gz ~/.pyenv/*