1. 程式人生 > >CentOS 7 安裝pyenv,部署 python 獨立隔離環境

CentOS 7 安裝pyenv,部署 python 獨立隔離環境

-- pen ssl 全局 .so del for ipy read

安裝環境: centos 7
[root@centos_7 cache]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

安裝pyenv 到本地

[root@centos_7 cache]# git clone git://github.com/yyuu/pyenv.git   ~/.pyenv

系統要先安裝 git :
如果沒有,則直接yum 安裝: yum  install  -y   git 

為pyenv 提供環境配置並生效

[root@centos_7 cache]# cat  ~/.bashrc
# .bashrc

# User specific aliases and functions

alias rm=‘rm -i‘
alias cp=‘cp -i‘
alias mv=‘mv -i‘

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

添加最後的三行配置,保存文件,

source  ~/.bashrc  使配置生效

或者 exec  $SHELL -l

安裝系統的環境

[root@centos_7 cache]# yum groupinstall "Development Tools"  -y

[root@centos_7 cache]# yum install -y python-devel libevent-devel python-pip gcc xz-devel openssl-devel readline-devel sqlite-devel bzip2-devel

列出可以安裝的 python 版本

[root@centos_7 cache]# pyenv install --list

安裝 python 3.5.2

因為 pyenv 是先將 python 安裝包下載到 ~/.pyenv/cache/  目錄,然後校驗 md5值,再安裝的,所以,如果用 pyenv  install  3.5.2 -v  的命令安裝 python 比較慢,則可以將python-3.5.2 下載到 cache/ 目錄,再用 pyenv  install 3.5.2  -v 命令安裝。

例如:
[root@centos_7 cache]# wget http://mirrors.sohu.com/python/3.5.2/Python-3.5.2.tar.xz -P ~/.pyenv/cache/
在搜狐的鏡像下載 Python-3.5.2.tar.xz 到 cache/ 目錄

然後:
[root@centos_7 cache]# pyenv install 3.5.2 -v

速度會比較快

安裝完成後,需要刷新 pyenv

[root@centos_7 cache]# pyenv rehash

再查看系統中的 python 版本:

[root@centos_7 cache]# pyenv versions
* system (set by /root/.pyenv/version)
  3.5.2

設置在特定的目錄使用特定的 python 版本

pyenv的global子命令用於設定全局的版本,local子命令用於設置當前工作目錄的特定python版本,version則用於查看當前正在使用的版本,新建兩個目錄,分別設置各自使用的版本

例如: 設置在 ~/py35 目錄使用 python3.5.2 

[root@centos_7 py35]# pwd
/root/py35
[root@centos_7 py35]# pyenv local 3.5.2
[root@centos_7 py35]# pyenv local
3.5.2

[root@centos_7 py35]# python -V
Python 3.5.2

切換到其他目錄:
[root@centos_7 ~]# python -V
Python 2.7.5

刪除當前目錄下的 python 版本

要刪除前面的 local 設置,只需要使用 --unset 或者 將目錄下的 .python-version 文件刪除
[root@centos_7 py35]# pyenv local --unset
[root@centos_7 py35]# python  -V
Python 2.7.5
變回系統默認的 2.7.5 版本了

通過刪除 .python-version 文件,取消特定目錄使用特定 python 版本:
[root@centos_7 py35]# rm -rf .python-version
[root@centos_7 py35]# ls
[root@centos_7 py35]# pyenv local
pyenv: no local version configured for this directory
[root@centos_7 py35]# python -V
Python 2.7.5

安裝 pyenv-virtualenv 插件

pyenv virtualenv 是pyenv的插件,為pyenv設置的python版本提供隔離的虛擬環境,設置虛擬環境後,在這個目錄下面安裝的第三方庫及修改庫搜索路徑都不會影響其他環境,相當於一個沙盒環境,互相不影響。
安裝 pyenv-virtualenv插件

[root@centos_7 py35]#  git clone git://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
重新載入環境
exec  $SHELL
pyenv-virtualenv會為pyenv引入一些新的命令,例如 virtualenv/virtualenv-delete 用於創建/刪除虛擬環境,virtualenvs用於列出所有的虛擬環境,activate /deactivate用於激活和禁用虛擬環境
創建一個虛擬環境
[root@centos_7 ~]# mkdir venv35
[root@centos_7 ~]# cd venv35
[root@centos_7 venv35]# ls
[root@centos_7 venv35]# pyenv virtualenv 3.5.2 env35

查看可用的版本:
[root@centos_7 venv35]# pyenv versions
* system (set by /root/.pyenv/version)
  3.5.2
  3.5.2/envs/env35
  env35

在此虛擬環境目錄下面安裝 ipython,切換到其他設定的版本目錄中無法使用,說明是相互隔離的

pyenv-virtualenv 只需要記住三條命令:

pyenv virtualenv 3.5.2 env35     #創建一個 Python 版本為 3.5.2 的環境, 環境叫做 env
pyenv activate env35  #激活 env 這個環境, 此時 Python 版本自動變為 3.3.0, 且是獨立環境
pyenv deactivate              #離開已經激活的環境

CentOS 7 安裝pyenv,部署 python 獨立隔離環境