背景
在學習python過程中,centos系統自帶的python版本比較滯後。在測試過程中,往往需要多個版本,但又不想影響系統自帶的版本;尤其是在學習django過程中,python版本切換更加頻繁,因此有了多版本切換需求。
在網上查了相關的文件,起初寫了幾個指令碼,完成多版本的部署和切換,最終效果不太理想。
恰好最近在學習ansible,決定使用ansible來部署python的多版本環境。
更新說明
v1.0 基本實現了python多環境的部署;
v1.1 使用role重新組織了playbook,增加了解除安裝功能pyuninstall
v1.1.1 由於網路問題,安裝python往往過慢,增加使用本地安裝包進行安裝,預設並沒有啟用,可以修改use_local_python_targz: true
啟用。
快速使用
克隆並配置好對應主機的ip後,直接執行playbook,預設會安裝python3.6.0;
在命令列執行py360
即可啟動虛擬環境,執行pyd
即可關閉虛擬環境;
部署方法
1 確保你所使用的環境已經安裝的ansible,並可以正常使用;遠端執行的金鑰已經新增;
2 下載playbook
git clone https://git.coding.net/echohiyang/pyinstall.git
或者下載指定的版本
wget https://coding.net/u/echohiyang/p/pyinstall/git/archive/v1.1.1.zip
3 修改hosts檔案,在pythonserver組中加入你的主機ip
4 修改變數 python版本 roles/pyinstall/vars/main.yml
python_version_to_install: 3.6.0
python_version: 3.6.0
python_alias: py360
python_version_to_install
將要安裝的python版本,所要安裝的版本已經存在時,安裝步驟會跳過;python_version_to_deploy
指向的python_version_to_install
已經存在或者正在被安裝,則會建立python的虛擬環境,別名為python_alias
;實際上就是用哪個版本建立python虛擬開發環境;
python_alias:建立虛擬環境的別名
5 執行playbook進行安裝
ansible-play pyinstall.yml
6 執行playbook進行解除安裝
ansible-play pyuninstall.yml
部署結束
使用方法
前面部署過程中已經新增了python_alias別名,可以直接使用別名來啟動python虛擬環境。
說明
這裡一個只能建立一個開發環境,多個開發環境需要執行多次;由於ansible具有冪等性,多次相同的執行並不會導致覆蓋。
目錄說明(預設)
/usr/local/pyenv 主目錄
/usr/local/pyenv/path.d/ 自定義的PATH變數
宣告
此專案直接引用了以下兩個開源專案
https://github.com/yyuu/pyenv…
https://github.com/yyuu/pyenv…