首页IT科技python3环境搭建(python的沙盒环境virtualenv)

python3环境搭建(python的沙盒环境virtualenv)

时间2025-05-02 16:43:45分类IT科技浏览3891
导读:分类: 我的python新生 2012-08-07 17:33...

分类: 我的python新生 2012-08-07 17:33 446人阅读 评论(0) 收藏 举报

目录(?)[+]

事前準備 Linux Windows Virtualenv - Virtual Python Environment builder 安裝 使用方法 I. 建立虛擬環境 II. 啟動虛擬環境 III. 退出虛擬環境 IV. 在虛擬環境安裝新的 Python 套件 V. 從程式中指定使用虛擬環境的函數庫 延伸套件:Virtualenvwrapper I. 安裝 II. 使用方法 Pythonbrew 安裝 編譯前準備 使用方法 I. 列出可安裝的版本 II. 安裝新的版本 III. 清理安裝時產生的檔案 IV. 列出所有已安裝的版本 V. 切換已安裝的版本 VI. 批次在不同版本下測試 VII. 移除已安裝的版本 VIII. 與 Virtualenv 的整合 IX. Buildout X. 自我更新 參考資料

VirtualEnv用于在一台机器上创建多个独立的python运行环境          ,VirtualEnvWrapper为前者提供了一些便利的命令行上的封装          。

使用 VirtualEnv 的理由:

隔离项目之间的第三方包依赖                ,如A项目依赖django1.2.5      ,B项目依赖django1.3                。 为部署应用提供方便          ,把开发环境的虚拟环境打包到生产环境即可,不需要在服务器上再折腾一翻      。

使用说明:

安装: sudo easy_install virtualenv

建立新的运行环境:virtualenv <env-name>

进入相应的独立环境:source <env-path>/bin/activate

最近无意中看到一本书《Python Testing Cookbook》               ,正好我们项目最近要提高测试质量      ,就          ”翻“来看看          。书中介绍了一些方便的工具     ,比如virtualenv               。

通过virtualenv可以方便的创建一个隔离的python环境               ,即所谓的沙盒      。沙盒的好处包括: 解决库之间的版本依赖           ,比如同一系统上不同应用依赖同一个库的不同版本     。 解决权限限制     ,比如你没有root权限               。 尝试新的工具               ,而不用担心污染系统环境           。

当然           ,virtualenv还是需要安装到系统环境的,通过easy_install     。然后就可以创建沙盒了:

$virtualenv 沙盒名(比如mysandbox)

这个命令会创建一个目录mysandbox               ,沙盒的所有内容都在该目录下               。在mysandbox/bin目录下有个定制的python解释器                ,它会优先使用mysandbox/lib/pythonX.X/site-packages目录下的库           。通过该解释器安装的库都放在上述目录中。

为了方便使用,virtualenv在mysandbox/bin目录下还提供了两个脚本:

$source mysandbox/bin/activate : 启用指定的沙盒               。其实只是改变环境变量PATH中python的路径                。你会注意到控制台的前缀变成了 (mysandbox)$          ,提示你已经进入该沙盒环境。

$source mysandbox/bin/deactivate : 关闭指定的沙盒          。

之前说到沙盒的解释器会优先查找沙盒的site-packages目录                ,如果找不到      ,就会查找系统的site-packages目录                。我们可以在创建沙盒时加入参数--no-site-packages来禁止它查找系统的目录      。

virtualenv的作者还无私地推荐了另一个强大的沙盒工具 zc.buildout          。

                ”I strongly recommend anyone doing application development or deployment use one of these tools.“

作者是 Mosky 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_pythonmod_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. 使用方法

Pythonbrew 的操作不外乎安裝     、移除               、列出及使用新的 Python 版本           ,下面是依照初次使用時所需的指令順序來介紹          。

I. 列出可安裝的版本

首先我們用 list --know 列出可以安裝的 Python 版本:

$ pythonbrew list --know
II. 安裝新的版本

接著利用 install VERSION 來下載並編譯 Python 到本機,除了接 Python 的版本編號以外               ,也可以接 Python 的 tarball 路徑或網址來安裝;也能調整編譯 Python 的選項               。下面是一些例子:

$ pythonbrew install 2.7.2 $ pythonbrew install --verbose 2.7.2 $ pythonbrew install --force 2.7.2 $ pythonbrew install --no-test 2.7.2 $ pythonbrew install --configure="CC=gcc_4.1" 2.7.2 $ pythonbrew install --no-setuptools 2.7.2 $ pythonbrew install http://www.python.org/ftp/python/2.7/Python-2.7.2.tgz $ pythonbrew install /path/to/Python-2.7.2.tgz $ pythonbrew install /path/to/Python-2.7.2 $ pythonbrew install 2.7.2 3.2 III. 清理安裝時產生的檔案

下載的 Python tarball 會放在 ~/.pythonbrew/dists/ 下;而編譯則會在 ~/.pythonbrew/build/ 下進行      。如果想清理這兩個目錄                ,可以使用:

$ pythonbrew cleanup IV. 列出所有已安裝的版本

安裝好之後,可以使用 list 命令列出所有已安裝的 Python 版本:

$ pythonbrew list

後面有打星號的          ,就是現在正在使用的 Python 版本     。

V. 切換已安裝的版本

可以使用 switch 來切換預設的 Python 版本:

$ pythonbrew switch VERSION

如果只想在當前的 shell 下切換                ,可以使用 use:

$ pythonbrew use VERSION

要切換回預設的環境時      ,使用 off:

$ pythonbrew off

就會返回系統環境的 Python 了               。

VI. 批次在不同版本下測試

最重要的是          ,可以用系統內所有安裝過的 Python 版本               ,或指定的 Python 版本來測試自己的程式!

$ pythonbrew py test.py # 使用所有有安裝的版本 $ pythonbrew py -v test.py # 詳細輸出 $ pythonbrew py -p 2.7.2 -p 3.2 test.py # 指定特定的版本 VII. 移除已安裝的版本

若想移除已經安裝的 Python      ,則可以使用 uninstall:

$ pythonbrew uninstall 2.7.2 $ pythonbrew uninstall 2.7.2 3.2 VIII. 與 Virtualenv 的整合

要注意 Pythonbrew 中所提供的 Virtualenv     ,是基於 Pythonbrew 中所安裝的 Python(置於 ~/.pythonbrew/venvs/Python-VERSION/ 下)           。在不使用 Pythonbrew 的情況下               ,無法使用附屬於 Pythonbrew 的 venv 功能     。

Pythonbrew 提供了和 Virtualenvwrapper 類似的功能           ,只是沒有像 Virtualenvwrapper 那麼完整的 plugin 系統               。所有在 Pythonbrew 中的 Virtualenv 指令都以 venv 作為第一個副命令           。

$ pythonbrew venv create [指定虛擬環境的名稱] $ pythonbrew venv list $ pythonbrew venv use [指定虛擬環境的名稱] $ pythonbrew venv delete [指定虛擬環境的名稱]

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

IX. Buildout

如果有使用 Buildout 這個工具     ,也可以透過 Pythonbrew 來執行:

$ pythonbrew buildout $ pythonbrew buildout -p 2.6.6 # 指定版本
X. 自我更新

最後               ,Pythonbrew 有內建更新自己的指令:

$ pythonbrew update $ pythonbrew update --master $ pythonbrew update --develop

Virtualenv 和 Pythonbrew 就介紹到這邊           ,如果想獲得更多資訊,可以多多參考它們的官網哦               。祝大家玩得愉快                。

參考資料

www.virtualenv.org utahta/pythonbrew - GitHub setuptools - PyPI pip - PyPI virtualenvwrapper documentaion Building Python and more on missing modules - Stack Overflow
声明:本站所有文章               ,如无特殊说明或标注                ,均为本站原创发布。任何个人或组织,在未征得本站同意时          ,禁止复制           、盗用     、采集               、发布本站内容到任何网站           、书籍等各类媒体平台          。如若本站内容侵犯了原著者的合法权益                ,可联系我们进行处理                。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
终端默认字体(fedora8 使用小记之:终端字体设置) 附加组件火狐(HostAdmin 1.3.6 HostAdmin :: Firefox 附加组件)