最近做的東西使用的Python來開發(fā)蛉顽,自然避免不了多版本Python并存洋闽。簡單記錄一下CentOS下使用 pyenv 管理多版本Python。
首先是安裝pyenv
下載pyenv
執(zhí)行命令
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
這里的~/.pyenv
是存放pyenv的路徑财岔,你可以換成其他位置吞杭。
[root@cyjay-1 ~]# git clone https://github.com/yyuu/pyenv.git ~/.pyenv
Cloning into '/root/.pyenv'...
remote: Enumerating objects: 34, done.
remote: Counting objects: 100% (34/34), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 16518 (delta 12), reused 23 (delta 8), pack-reused 16484
Receiving objects: 100% (16518/16518), 3.22 MiB | 1.28 MiB/s, done.
Resolving deltas: 100% (11199/11199), done.
執(zhí)行后看到以上內(nèi)容便是pyenv已經(jīng)下載到了系統(tǒng)的 /root/.pyenv
中
配置環(huán)境變量
配置環(huán)境變量使我們可以在命令行直接輸入pyenv使用它
執(zhí)行命令:
vim ~/.bash_profile
按 i
進入插入編輯模式 ,在bash_profile
中插入如下內(nèi)容:
## pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
插入后大致如下:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
## pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
此時锋勺,按Esc
鍵退出插入編輯模式蚀瘸,輸入 :wq
回車便會保存修改
配置生效
雖然我們把pyenv加入了環(huán)境變量,但是暫時環(huán)境變量并未生效庶橱,我們需要讓它生效贮勃。
有三種方式使配置生效
方式一
重新打開一個會話
方式二
執(zhí)行 source ~/.bash_profile
方式三
執(zhí)行 exec $SHELL -l
我這里就選擇第二種方式
pyenv安裝的多版本Python
為了避免出問題,先安裝依賴:
yum install readline readline-devel readline-static -y
yum install openssl openssl-devel openssl-static -y
yum install sqlite-devel -y
yum install bzip2-devel bzip2-libs -y
使用 pyenv install <版本號>
即可安裝對應版本的Python苏章,如:
[root@cyjay-1 ~]# pyenv install 3.6.5
Downloading Python-3.6.5.tar.xz...
-> https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
由于國內(nèi)網(wǎng)絡環(huán)境寂嘉,從國外服務器下載有時候會很慢,以至于在這個里停留很久枫绅,甚至一直沒反應泉孩。此時我們按下Ctrl + C
停止安裝,然后從國內(nèi)源下載Python來安裝并淋,我們以安裝Python-3.6.5為例:
v=3.6.5;wget http://mirrors.sohu.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v
其中v=3.6.5
的意思就不用說了吧寓搬。 wget http://mirrors.sohu.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/
指的是把 Python下載到pyenv的安裝路徑下的cache
文件夾下。
至于為什么要這樣做县耽,這要從pyenv的安裝原理來講:
pyenv安裝Python時句喷,需要從官網(wǎng)下載對應的版本壓縮包到本地,然后編譯酬诀、安裝到pyenv安裝目錄的versions
下面脏嚷,我們還可以先手動下載對應的版本壓縮包,放到pyenv安裝目錄的cache
文件夾下面瞒御,然后執(zhí)行安裝這個版本時父叙,pyenv會校驗md5值和完整性,確認無誤就不會重新下載這個版本,而是直接從這里安裝趾唱,從而解決安裝Python很慢的問題
Python多版本管理
查看已經(jīng)安裝的Python版本
pyenv versions
若環(huán)境配置無誤涌乳,會出現(xiàn)以下內(nèi)容:
[root@cyjay-1 ~]# pyenv versions
* system (set by /root/.pyenv/version)
3.6.5
其中 system (set by /root/.pyenv/version)
是系統(tǒng)自帶的版本,通常是Python 2.7.x 的甜癞,*
號表示該版本為當前使用的Python版本夕晓, 3.6.5
就是剛剛安裝的版本。
Python版本切換
當前shell的session中啟用某版本悠咱,即當前會話全局使用某版本蒸辆,如:
pyenv shell 3.6.5
當前文件夾所有會話使用某版本,如:
pyenv local 3.6.5
當前路徑中會創(chuàng)建一個.python-version, 以后進入這個目錄自動切換為該版本
全局使用某版本(少用析既,盡量不用躬贡,避免不測的麻煩)如:
pyenv global 3.6.5
設置默認Python版本
Python版本刪除
若需要刪除已安裝的某個版本(因為系統(tǒng)有些東西會用到自帶的Python,為避免某些不測的麻煩眼坏,在你沒有能力解決的情況下拂玻,盡量不要刪除自帶版本。雖然我沒試過刪了會怎么宰译,但是我反正是不敢去試) 執(zhí)行:
pyenv uninstall 3.6.5