Python 的虛擬環境及多版本開發利器─Virtualenv 與 Pythonbrew__Python

來源:互聯網
上載者:User

本文轉載至:http://www.openfoundry.org/tw/tech-column/8516-pythons-virtual-environment-and-multi-version-programming-tools-virtualenv-and-pythonbrew

Virtualenv 和 Pythonbrew 都是可以創造虛擬(獨立)Python 環境的工具,只是虛擬(獨立)標的不同。

Virtualenv 可以隔離函數庫需求不同的專案,讓它們不會互相影響。在建立並啟動虛擬環境後,透過 pip 安裝的套件會被放在虛擬環境中,專案就可以擁有一個獨立的環境。

簡而言之,Virtualenv 可以幫你做到: 在沒有權限的情況下安裝新套件 不同專案可以使用不同版本的相同套件 套件版本升級時不會影響其他專案

Pythonbrew 則可以在家目錄中安裝多個 Python,並迅速地切換版本;也可以在指定的 Python 版本下批次測試你的 Python 程式;另外更整合了 Virtualenv。

這篇文章會詳細介紹這兩個工具,讓你在多人開發及多版本開發的環境中更得心應手。

  事前準備

Python 的 package 通常會上傳至 PyPI,有很多工具都可以從 PyPI 安裝 package。下面會使用easy_install 這個工具(由 setuptools 提供)來安裝 Virtualenv 和 Pythonbrew。 01. Linux

如果不知道 easy_install 或還沒安裝 setuptools,在 Debian/Ubuntu 可以用下列指令安裝:

$ sudo apt-get install python-setuptools

在 Fedora/CentOS/Redhat/openSUSE,則可以使用:

$ su -# yum install python-setuptools
02. Windows

在 Windows 則可以從 setuptools 的頁面找到 *.exe 格式的安裝檔案。安裝完後,可以在C:\PythonX.Y\Scripts\(X.Y 是 Python 的版本)下找到 easy_install.exe。記得把這個路徑放進 Windows 環境變數中的 PATH。

接著就可以輕鬆安裝任何在 PyPI 的 Python Package 囉。 Virtualenv - Virtual Python Environment builder 01. 安裝

Pythonbrew 已整合了 Virtualenv,如果不想額外安裝一個套件,也可以不要裝 Virtualenv。

如果需要安裝,請於命令列模式下輸入下列指令:

# easy_install virtualenv
02. 使用方法 I. 建立虛擬環境

請於命令列模式下輸入下列指令:

$ virtualenv [指定虛擬環境的名稱]

例如下列指令會建立名為 "ENV" 的虛擬環境:

$ virtualenv ENV

預設在建立虛擬環境時,會依賴系統環境中的 site packages,如果想完全不依賴系統的 packages,可以加上參數 --no-site-packages 來建立虛擬環境:

$ virtualenv --no-site-packages [指定虛擬環境的名稱]
II. 啟動虛擬環境

請先切換當前目錄至建立的虛擬環境中。前例中,建立名稱為 "ENV",則:

$ cd ENV

接著,啟動虛擬環境:

$ source bin/activate

在 Windows 環境中則改用:

> \path\to\env\Scripts\activate.bat

然後就可以注意到,在 shell 提示字元的最前面多了虛擬環境的名稱提示:

(ENV) ...$
III. 退出虛擬環境

請於命令列模式下輸入下列指令:

$ deactivate

就可以回到系統原先的 Python 環境。 IV. 在虛擬環境安裝新的 Python 套件

Virtualenv 在安裝時會附帶 pip 這個 Python 的套件安裝工具,當虛擬環境被啟動時,由它安裝的 package 會出現在虛擬環境的資料夾中,用法是:

(ENV)...$ pip install [套件名稱]

如果系統也有安裝 pip,請特別注意是否已經啟動虛擬環境,否則套件會被安裝到系統中,而非虛擬環境裡。

如果想要避免 pip 在沒有進入虛擬環境時被使用,可以在 ~/.bashrc 加上:

export PIP_REQUIRE_VIRTUALENV=true

要求 pip 一定要在虛擬環境中執行。

也可以用下面的設定,讓系統的 pip 自動使用啟動中的虛擬環境。

export PIP_RESPECT_VIRTUALENV=true

避免意外將套件安裝至系統環境。 V. 從程式中指定使用虛擬環境的函數庫

無法從 Shell 啟動虛擬環境的情況,像是使用 mod_python 或 mod_wsgi,這時可以在 Python 的程式中加上:

activate_this = '/path/to/env/bin/activate_this.py'execfile(activate_this, dict(__file__=activate_this))

來使用安裝在虛擬環境中的 packages。 03. 延伸套件:Virtualenvwrapper

Virtualenvwrapper 是一個 Virtualenv 的 extension,可使虛擬環境的管理變得更容易。

詳細來說,Virtualenvwrapper 提供下述功能: 將所有的虛擬環境整合在一個目錄下。 管理(新增、移除、複製)所有的虛擬環境。 可以使用一個命令切換虛擬環境。 Tab 補全虛擬環境的名字。 每個操作都提供允許使用者自訂的 hooks。 可撰寫容易分享的 extension plugin 系統。 I. 安裝

請於命令列模式下輸入下列指令:

# easy_install virtualenvwrapper
II. 使用方法

於 $WORKON_HOME製作虛擬環境:

$ mkvirtualenv [-i package] [-r requirements_file] [virtualenv options] ENVNAME

列出所有的虛擬環境:

$ lsvirtualenv [-b] [-l] [-h]

-b 是簡短模式;-l 是詳細模式(預設);-h 是印出 help 資訊。

移除虛擬環境:

$ rmvirtualenv ENVNAME

複製虛擬環境:

$ cpvirtualenv ENVNAME TARGETENVNAME

啟動虛擬環境:

$ workon [environment_name]

如果只輸入 workon,則會列出所有的虛擬環境。

離開虛擬環境一樣是使用 deactivate。

可以使用下面的設定來告訴 pip Virtualenv 的路徑。

export PIP_VIRTUALENV_BASE=$WORKON_HOME

Virtualenvwrapper 的功能當然不只如此,更多功能可以參考 Virtualenvwrapper 的官方檔案。 Pythonbrew 01. 安裝

Pythonbrew 是個比較新的專案,雖然比較新,卻非常完整。它也有整合上面介紹的 Virtualenv。可以用類似 Virtualenvwrapper 的方式來操作 Virtualenv。

安裝方式與 Virtualenv 一樣,只要輸入下面的指令就可以了:

# easy_install $ pythonbrew

Pythonbrew 官方有推薦的安裝方式,但這篇教學為求一致性,就不額外介紹了,可以參考pythonbrew/README.rst。

對於 Windows 的使用者,很可惜地,Pythonbrew 暫時沒有支援 Windows 的計畫 (#6: Windows Support? - Issues - utahta/pythonbrew - GitHub)。所以 Windows 暫時還沒辦法使用 Pythonbrew 囉。

經過 easy_install 的安裝後,還需要在 shell 執行:

$ pythonbrew_install

才會把初始的設定檔和資料夾配置進你的家目錄。接著要修改 ~/.bashrc 的配置:

$ echo "source ~/.pythonbrew/etc/bashrc" >> ~/.bashrc

這樣就算安裝完全囉。

Pythonbrew 使用 curl 來抓取資料,如果你的系統沒有,請記得安裝。Ubuntu 上可以使用這行指令:

$ sudo apt-get install curl
02. 編譯前準備

因為 Pythonbrew 採取下載 tarball,並編譯、安裝的方法,所以我們要先為系統準備好編譯 Python 所需的套件。

也因為許多 Linux 發行版都已打包 Python,所以我們可以偷懶一點,用已經打包好的套件來解決編譯所需的相依性。在 Ubuntu/Debian 上,可以透過:

$ sudo apt-get build-dep python2.7

來安裝所有編譯 Python 2.7 所需的套件。雖然已經能夠安裝得相當完整,但還是缺少了 gdbm 這個 module,如果需要的話,可以透過:

$ sudo apt-get build-dep python-gdbm

來安裝編譯 gdbm 所需的套件。

註:bsddb185、linuxaudiodev、ossaudiodev、sunaudiodev 等是按以上方式安裝後,仍會缺少的 module。其中 ossaudiodev(Open Sound System)在隨 Ubuntu 發布的 Python 中有提供,列出來讓大家參考。

Fedora/CentOS/Redhat/openSUSE 則可以使用 yum-builddep 這個指令。 03. 使用方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.