使用Virtualenv隔離Pyhon、Ansible不同發行版

來源:互聯網
上載者:User
1.virtualenv介紹

在python開發中,我們可能會遇到一種情況,就是當前的項目依賴的是某一個版本,但是另一個項目依賴的是另一個版本,這樣就會造成依賴衝突,而virtualenv就是解決這種情況的,virtualenv通過建立一個虛擬化的python運行環境,將我們所需的依賴安裝進去的,不同項目之間相互不干擾,如下所示。
2.安裝virtualenv

首先要安裝必須的依賴,否則後續會報錯

 yum install python-setuptools python-setuptools-devel

安裝virtualenv比較簡單,無論是在linux系統上還是windows上都可以通過pip來進行安裝,如下:pip install virtualenv

如果安裝不成功也可以下載virtualenv源碼package,通過執行setup.py來安裝virtualenv。同時因為python2和python3的不同,因此也有了兩種pip和pip3兩種python包安裝工具,而兩種工具安裝的virtualenv也是不相同的,py2安裝的virtualenv虛擬化出來的python運行環境是python2的,py3安裝的virtualenv預設虛擬化環境則是python3的。 3.virtualenv運行使用 3.1 建立虛擬化環境

使用pycharm來作為本樣本的編輯器,選擇python2.7工作環境,建立工程virtualenvDemo,在控制台中輸入命令:

virtualenv venv

這時候便會在當前的項目中建立venv檔案夾,為當前項目的虛擬python運行環境,如下:

我本機此時預設的python環境為python2.7,那麼此時建立的虛擬環境就是以python2.7建立的虛擬化環境,如果需要選擇一個python解譯器來建立虛擬化環境,命令則為:

virtualenv -p /usr/bin/python2.7 venv

此時還需將當前工程的interpreter改為當前的虛擬環境,要不然會不起作用,這個不再詳述。


3.2 啟用

啟用虛擬化環境的命令為:

source venv/bin/activate

啟用後,在控制台會有一個帶有(venv)的標誌,如下:
3.3安裝依賴

在以上完成之後就可以通過命令pip install 來安裝python包了,這裡安裝python包就不需要root許可權了,直接就可以安裝十分方便。在venv的環境中,使用pip安裝的包都不會再是全域性的包,只會在當前的虛擬環境中起作用,避免了汙染系統內容。 3.4 退出當前系統內容

在控制台中輸入命令deactivate後,就會推出當前的venv虛擬化環境。

(.virtualenv) # deactivate

# exit 4.virtualenv其他命令

virtualenv各種其他命令如下:

“`
用法:

$ virtualenv [OPTIONS] DEST_DIR
選項:
–version
顯示目前的版本號。
-h, –help
顯示協助資訊。
-v, –verbose
顯示詳細資料。
-q, –quiet
不顯示詳細資料。
-p PYTHON_EXE, –python=PYTHON_EXE
指定所用的python解析器的版本,比如 –python=python2.5 就使用2.5版本的解析器建立新的隔離環境。 預設使用的是當前系統安裝(/usr/bin/python)的python解析器
–clear
清空非root使用者的安裝,並重頭開始建立隔離環境。
–no-site-packages
令隔離環境不能訪問系統全域的site-packages目錄。
–system-site-packages
令隔離環境可以訪問系統全域的site-packages目錄。
–unzip-setuptools
安裝時解壓Setuptools或Distribute
–relocatable
重定位某個已存在的隔離環境。使用該選項將修正指令碼並令所有.pth檔案使用相當路徑。
–distribute
使用Distribute代替Setuptools,也可設定環境變數VIRTUALENV_DISTRIBUTE達到同樣效要。
–extra-search-dir=SEARCH_DIRS
用於尋找setuptools/distribute/pip發布包的目錄。可以添加任意數量的–extra-search-dir路徑。
–never-download
禁止從網上下載任何資料。此時,如果在本地搜尋發布包失敗,virtualenv就會報錯。
–prompt==PROMPT
定義隔離環境的命令列首碼。
“`
5.綜上

virtualenv就是一個搭建虛擬化的python環境,便於不同的項目在同一台機器上開發運行。

virtualenv更多的還是適用於本地開發不同的項目,但是在生產環境中還是使用docker給不同的項目建立不同的容器,各自分開運行為好,不宜放在一個單獨的物理機中運行。

6.安裝必要的ansible依賴包

# pip install paramiko PyYAML jinja2

# cd ansible

# git submodule update --init lib/ansible/modules/core

# git submodule update --init lib/ansible/modules/extras

7. 載入ansible2.1

Tip: env-setup 是 ansible 為 hacker 準備的一個指令碼,用來設定一些ansible所需的環境變數

# . /home/deploy/.virtualenv/ansible/hacking/env-setup -q

$ ansible --version

ansible 2.1.0 (devel 6ddea3e915) last updated 2016/02/16 16:13:32 (GMT +800)  lib/ansible/modules/core: (detached HEAD 8d126bd877) last updated 2016/02/16 16:19:09 (GMT +800)  lib/ansible/modules/extras: (detached HEAD f6c5ed987f) last updated 2016/02/16 16:19:40 (GMT +800)  config file = /etc/ansible/ansible.cfg  configured module search path = Default w/o overrides

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.