# 虛擬環境
# 虛擬環境(virtualenv)
### 你聽說過`virtualenv`嗎?
如果你是一位初學者,你可能沒有聽說過`virtualenv`;但如果你是位經驗豐富的程序員,那么它可能是你的工具集的重要組織部分。
### 那么,什么是`virtualenv`?
`Virtualenv` 是一個工具,它能夠幫我們創建一個獨立(隔離)的Python環境。想象你有一個應用程序,依賴于版本為2的第三方模塊,但另一個程序依賴的版本是3,請問你如何使用和開發這些應用程序?
如果你把一切都安裝到了`/usr/lib/python2.7/site-packages`(或者其它平臺的標準位置),那很容易出現某個模塊被升級而你卻不知道的情況。
在另一種情況下,想象你有一個已經開發完成的程序,但是你不想更新它所依賴的第三方模塊版本;但你已經開始另一個程序,需要這些第三方模塊的版本。
### 用什么方式解決?
使用`virtualenv`!針對每個程序創建獨立(隔離)的Python環境,而不是在全局安裝所依賴的模塊。
要安裝它,只需要在命令行中輸入以下命令:
~~~
$ pip install virtualenv
~~~
最重要的命令是:
~~~
$ virtualenv myproject
$ source bin/activate
~~~
執行第一個命令在`myproject`文件夾創建一個隔離的virtualenv環境,第二個命令激活這個隔離的環境(`virtualenv`)。
在創建virtualenv時,你必須做出決定:這個virtualenv是使用系統全局的模塊呢?還是只使用這個virtualenv內的模塊。默認情況下,virtualenv不會使用系統全局模塊。
如果你想讓你的virtualenv使用系統全局模塊,請使用`--system-site-packages`參數創建你的virtualenv,例如:
~~~
virtualenv --system-site-packages mycoolproject
~~~
使用以下命令可以退出這個virtualenv:
~~~
$ deactivate
~~~
運行之后將恢復使用你系統全局的Python模塊。
# 福利
你可以使用`smartcd`來幫助你管理你的環境,當你切換目錄時,它可以幫助你激活(activate)和退出(deactivate)你的virtualenv。我已經用了很多次,很喜歡它。你可以在github([https://github.com/cxreg/smartcd](https://github.com/cxreg/smartcd)) 上找到更多關于它的資料。
這只是一個virtualenv的簡短介紹,你可以在 [http://docs.python-guide.org/en/latest/dev/virtualenvs/](http://docs.python-guide.org/en/latest/dev/virtualenvs/) 找到更多信息。
- 簡介
- 序
- 譯后感
- 原作者前言
- *args 和 **kwargs
- *args 的用法
- **kwargs 的用法
- 使用 *args 和 **kwargs 來調用函數
- 啥時候使用它們
- 調試 Debugging
- 生成器 Generators
- 可迭代對象(Iterable)
- 迭代器(Iterator)
- 迭代(Iteration)
- 生成器(Generators)
- Map和Filter
- Map
- Filter
- set 數據結構
- 三元運算符
- 裝飾器
- 一切皆對象
- 在函數中定義函數
- 從函數中返回函數
- 將函數作為參數傳給另一個函數
- 你的第一個裝飾器
- 使用場景
- 授權
- 日志
- 帶參數的裝飾器
- 在函數中嵌入裝飾器
- 裝飾器類
- Global和Return
- 多個return值
- 對象變動 Mutation
- slots魔法
- 虛擬環境
- 容器 Collections
- 枚舉 Enumerate
- 對象自省
- dir
- type和id
- inspect模塊
- 推導式 Comprehension
- 列表推導式
- 字典推導式
- 集合推導式
- 異常
- 處理多個異常
- finally從句
- try/else從句
- lambda表達式
- 一行式
- For - Else
- else語句
- open函數
- 目標Python2+3
- 協程
- 函數緩存
- Python 3.2+
- Python 2+
- 上下文管理器
- 基于類的實現
- 處理異常
- 基于生成器的實現