CentOS下用pyenv 和 virtualenv 搭建單機多版本python 虛擬開發環境


安裝

系統環境:CentOS 6.5

安裝依賴

yum -y install gcc gcc-c++ make git patch openssl-devel zlib-devel readline-devel sqlite-devel bzip2-devel bzip2-libs

安裝pyenv

curl -L https://raw.github.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

 

配置環境變量

官方提供方法:

echo -e '\n#pyenv' >>~/.bashrc
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source
~/.bashrc

 

直接在bashrc文件中寫入:

vim /root/.bashrc

#這段代碼的作用主要是指明pyenv的位置, 以便以后可以直接在命令行里面運行pyenv命令。 保存在~/.bashrc 文件中是為了每次用戶登陸后自動生效。
export PYENV_ROOT="${HOME}/.pyenv"

if [ -d "${PYENV_ROOT}" ]; then
  export PATH="${PYENV_ROOT}/bin:${PATH}"
  eval "$(pyenv init -)"
fi


#如果你是第一次運行命令並且沒有注銷的話, 這一段是不會生效的, 我們還需要運行下面的命令令其生效
source ~/.bashrc

pyenv用法

常用命令:

pyenv version        # 查看當前系統使用的python版本
pyenv versions        # 查看當前系統擁有的python版本
pyenv install 3.4.1          # 安裝3.4.1,可使用-v參數查看詳細輸出
pyenv uninstall 3.4.1         # 卸載
pyenv local 3.4.1     # local僅對當前目錄及子目錄生效,告訴當前目錄使用版本2.7.5,
pyenv global          # 告訴全局環境使用某個版本,為了不破壞系統環境,不建議使用global設置全局版本
pyenv rehash          # 重建環境變量,每當你增刪 Python 版本或帶有可執行文件的包(如 pip)以后,都應該執行一次本命令

示例

安裝某個版本的python

首先我們可以查看一下有哪些版本的python 可以安裝

pyenv install --list

結果如下:

2.4
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
2.5
...

接下來, 作為例子我們安裝兩個版本 (2.7.1 和 3.3.5)

pyenv install 2.7.1
pyenv install 3.3.5

安裝完畢后, 我們可以查看安裝的情況

pyenv versions

輸出結果如下:

* system (set by /home/tony/.pyenv/version)
  2.7.1
  3.3.5

簡單來說我們已經在這台機器上安裝了三個版本的python

system 代表當前系統的python 版本

2.7.1 和 3.3.5是我們用pyenv安裝的

*表示當前的python版本, 可以看到, 我們還在使用的是默認的system 自帶的python版本

 

切換python版本做一下測試

既然已經安裝了兩個其他版本的python, 我們來做一下測試

pyenv global 2.7.1   #全局進行切換到python 2.7.1版本
pyenv local 2.7.1  #只針對當前目錄及其子目錄切換python 2.7.1版本

 

這條命令就是將當前python 版本切換到2.7.1

再次運行 pyenv versions, 結果如下:

  system 
* 2.7.1 (set by /home/tony/.pyenv/version)
  3.3.5

可以看到當前的python 版本已經切換到2.7.1了, 如果還不放心, 直接運行 ‘python’ 命令進行驗證:

tony@ubuntu:~$ python
Python 2.7.1 (r271:86832, May  9 2014, 01:07:17) 
[GCC 4.8.2] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>> 

這里可以清楚看到, 當前版本確實是2.7.1

同理, 我們可以繼續用python global在各個版本之間進行切換, 如果要切換回系統版本, 請用:

pyenv global system   #全局進行切換到系統自帶python
pyenv local system  #只針對當前目錄及其子目錄切換到系統自帶python

 

如果要卸載某個版本的python, 可以這樣:

pyenv uninstall 2.7.1

 

pyenv virtualenv用法

利用virtualenv 創建虛擬python環境

pyenv通過插件,可以很好的和virtualenv一起工作,通過整合virtualenv,pyenv實現了真正意義上的環境隔離,每個項目都相當於使用一個單獨的解釋器。

首先我們創建一個2.7.1的虛擬環境

pyenv virtualenv 2.7.1 env271

這條命令在本機上創建了一個名為env271的python虛擬環境,這個環境的真實目錄位於:~/.pyenv/versions/

注意,命令中的 ‘2.7.1’ 必須是一個安裝前面步驟已經安裝好的python版本, 否則會出錯。

然后我們可以繼續通過 ‘pyenv versions’ 命令來查看當前的虛擬環境, 結果如下:

* system (set by /home/tony/.pyenv/version)
  2.7.1
  3.3.5
env271

這里我們可以看到, 除了已經安裝的python版本, 我們多出了一個env271的python虛擬環境

 

切換和使用新的python虛擬環境

切換到新的虛擬環境的命令為

pyenv activate env271

接下來我們的python環境就已經切換到2.7.1的虛擬環境了, 運行 ‘python’ 命令認證

(env271)tony@ubuntu:~$ python
Python 2.7.1 (r271:86832, May  9 2014, 01:07:17) 
[GCC 4.8.2] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>>

可以看到, python版本已經是2.7.1, 而且是在虛擬環境之中 (env271)

下面基本上你就可以在這個虛擬環境里面為所欲為了 :) 再也不用擔心系統路徑被搞亂的問題了。

如果要切換回系統環境, 運行這個命令即可

pyenv deactivate

那如果要刪除這個虛擬環境呢? 

pyenv virtualenv-delete env271

 

至此大功告成!

 


 

參考資料:

http://www.cnblogs.com/npumenglei/p/3719412.html

http://www.jianshu.com/p/4646dedaaff5


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM