# 第一節:虛擬環境
# 虛擬環境
### 為什么需要虛擬環境:
到目前位置,我們所有的第三方包安裝都是直接通過`pip install xx`的方式進行安裝的,這樣安裝會將那個包安裝到你的系統級的`Python`環境中。但是這樣有一個問題,就是如果你現在用`Django 1.10.x`寫了個網站,然后你的領導跟你說,之前有一個舊項目是用`Django 0.9`開發的,讓你來維護,但是`Django 1.10`不再兼容`Django 0.9`的一些語法了。這時候就會碰到一個問題,我如何在我的電腦中同時擁有`Django 1.10`和`Django 0.9`兩套環境呢?這時候我們就可以通過虛擬環境來解決這個問題。
### 虛擬環境原理介紹:
虛擬環境相當于一個抽屜,在這個抽屜中安裝的任何軟件包都不會影響到其他抽屜。并且在項目中,我可以指定這個項目的虛擬環境來配合我的項目。比如我們現在有一個項目是基于`Django 1.10.x`版本,又有一個項目是基于`Django 0.9.x`的版本,那么這時候就可以創建兩個虛擬環境,在這兩個虛擬環境中分別安裝`Django 1.10.x`和`Django 0.9.x`來適配我們的項目。
### 安裝`virtualenv`:
`virtualenv`是用來創建虛擬環境的軟件工具,我們可以通過`pip`或者`pip3`來安裝:
```
<pre class="calibre12">```
pip install virtualenv
pip3 install virtualenv
```
```
### 創建虛擬環境:
創建虛擬環境非常簡單,通過以下命令就可以創建了:
```
<pre class="calibre12">```
virtualenv [虛擬環境的名字]
```
```
如果你當前的`Python3/Scripts`的查找路徑在`Python2/Scripts`的前面,那么將會使用`python3`作為這個虛擬環境的解釋器。如果`python2/Scripts`在`python3/Scripts`前面,那么將會使用`Python2`來作為這個虛擬環境的解釋器。
### 進入環境:
虛擬環境創建好了以后,那么可以進入到這個虛擬環境中,然后安裝一些第三方包,進入虛擬環境在不同的操作系統中有不同的方式,一般分為兩種,第一種是`Windows`,第二種是`*nix`:
1. `windows`進入虛擬環境:進入到虛擬環境的`Scripts`文件夾中,然后執行`activate`。
2. `*nix`進入虛擬環境:`source /path/to/virtualenv/bin/activate`
一旦你進入到了這個虛擬環境中,你安裝包,卸載包都是在這個虛擬環境中,不會影響到外面的環境。
### 退出虛擬環境:
退出虛擬環境很簡單,通過一個命令就可以完成:`deactivate`。
### 創建虛擬環境的時候指定`Python`解釋器:
在電腦的環境變量中,一般是不會去更改一些環境變量的順序的。也就是說比如你的`Python2/Scripts`在`Python3/Scripts`的前面,那么你不會經常去更改他們的位置。但是這時候我確實是想在創建虛擬環境的時候用`Python3`這個版本,這時候可以通過`-p`參數來指定具體的`Python`解釋器:
```
<pre class="calibre12">```
virtualenv -p C:\Python36\python.exe [virutalenv name]
```
```
- - - - - -
### virtualenvwrapper:
`virtualenvwrapper`這個軟件包可以讓我們管理虛擬環境變得更加簡單。不用再跑到某個目錄下通過`virtualenv`來創建虛擬環境,并且激活的時候也要跑到具體的目錄下去激活。
#### 安裝`virtualenvwrapper`:
1. \*nix:`pip install virtualenvwrapper`。
2. windows:`pip install virtualenvwrapper-win`。
#### `virtualenvwrapper`基本使用:
1. 創建虛擬環境:
```
<pre class="calibre12">```
mkvirtualenv my_env
```
```
那么會在你當前用戶下創建一個`Env`的文件夾,然后將這個虛擬環境安裝到這個目錄下。
如果你電腦中安裝了`python2`和`python3`,并且兩個版本中都安裝了`virtualenvwrapper`,那么將會使用環境變量中第一個出現的`Python`版本來作為這個虛擬環境的`Python`解釋器。
2. 切換到某個虛擬環境:
```
<pre class="calibre12">```
workon my_env
```
```
3. 退出當前虛擬環境:
```
<pre class="calibre12">```
deactivate
```
```
4. 刪除某個虛擬環境:
```
<pre class="calibre12">```
rmvirtualenv my_env
```
```
5. 列出所有虛擬環境:
```
<pre class="calibre12">```
lsvirtualenv
```
```
6. 進入到虛擬環境所在的目錄:
```
<pre class="calibre12">```
cdvirtualenv
```
```
#### 修改`mkvirtualenv`的默認路徑:
在`我的電腦->右鍵->屬性->高級系統設置->環境變量->系統變量`中添加一個參數`WORKON_HOME`,將這個參數的值設置為你需要的路徑。
#### 創建虛擬環境的時候指定`Python`版本:
在使用`mkvirtualenv`的時候,可以指定`--python`的參數來指定具體的`python`路徑:
```
<pre class="calibre12">```
mkvirtualenv --python==C:\Python36\python.exe hy_env
```
```
- Introduction
- 第一章:學前準備
- 第一節:虛擬環境
- 第二節:準備工作
- 第三節:Django介紹
- 第四節:URL組成部分
- 第二章:URL與視圖
- 第一節:第一個Django項目
- 第二節:視圖與URL分發器
- 第三章:模板
- 第一節:模板介紹
- 第二節:模板變量
- 第三節:常用標簽
- 第四節:常用過濾器
- 第五節:自定義過濾器
- 第七節:模版結構優化
- 第八節:加載靜態文件
- 第四章:數據庫
- 第一節:MySQL相關軟件
- 第二節:數據庫操作
- 第三節:ORM模型
- 第四節:模型常用字段
- 第五節:外鍵和表關系
- 第六節:增刪改查操作
- 第七節:查詢操作
- 第八節:QuerySet API
- 第九節:ORM模型遷移
- 第十節:ORM作業
- 第十一節:ORM作業參考答案
- 第十二節:Pycharm連接數據庫
- 第五章:視圖高級
- 第一節:限制請求method
- 第二節:頁面重定向
- 第三節:HttpRequest對象
- 第四節:HttpResponse對象
- 第五節:生成CSV文件
- 第六節:類視圖
- 第七節:錯誤處理
- 第六章:表單
- 第一節:表單概述
- 第二節:用表單驗證數據
- 第三節:ModelForm
- 第四節:文件上傳
- 第七章:cookie和session
- 第八章:上下文處理器和中間件
- 第一節:上下文處理器
- 第二節:中間件
- 第九章:安全
- 第一節:CSRF攻擊
- 第二節:XSS攻擊
- 第三節:點擊劫持攻擊
- 第四節:SQL注入
- 第十章:信號
- 第一節:什么是信號
- 第十一章:驗證和授權
- 第一節:概述
- 第二節:用戶對象
- 第三節:權限和分組
- 第十二章:Admin系統
- 第十三章:Django的緩存
- 第十四章:memcached
- 第十五章:Redis