
### 為什么需要虛擬環境:
到目前位置,我們所有的第三方包安裝都是直接通過pip install xx的方式進行安裝的,這樣安裝會將那個包安裝到你的系統級的Python環境中。但是這樣有一個問題,就是如果你現在用Django 1.10.x寫了個網站,然后你的領導跟你說,之前有一個舊項目是用Django 0.9開發的,讓你來維護,但是Django 1.10不再兼容Django 0.9的一些語法了。這時候就會碰到一個問題,我如何在我的電腦中同時擁有Django 1.10和Django 0.9兩套環境呢?這時候我們就可以通過虛擬環境來解決這個問題。
## virtualenv
### 安裝virtualenv
```
virtualenv是用來創建虛擬環境的軟件工具,我們可以通過pip或者pip3來安裝
pip install virtualenv
pip3 install virtualenv
```
### 創建虛擬環境
```
virtualenv [虛擬環境的名字]
創建虛擬環境的時候指定Python解釋器
virtualenv -p C:\Python36\python.exe [virutalenv name]
```
**進入虛擬環境**
```
虛擬環境創建好了以后,那么可以進入到這個虛擬環境中,然后安裝一些第三方包,進入虛擬環境在不同的操作系統中有不同的方式,一般分為兩種,
第一種是Windows
第二種是*nix:
windows進入虛擬環境:進入到虛擬環境的Scripts文件夾中,然后執行activate。
*nix進入虛擬環境:
cd virtualenv/bin
source activate
一旦你進入到了這個虛擬環境中,你安裝包,卸載包都是在這個虛擬環境中,不會影響到外面的環境。
```
**退出虛擬環境**
```
退出虛擬環境很簡單,通過一個命令就可以完成:deactivate。
```
## virtualenvwrapper
virtualenvwrapper這個軟件包可以讓我們管理虛擬環境變得更加簡單。不用再跑到某個目錄下通過virtualenv來創建虛擬環境,并且激活的時候也要跑到具體的目錄下去激活。
### 安裝virtualenvwrapper
```
Linux:pip install virtualenvwrapper
編輯家目錄下面的.bashrc文件,添加下面兩行。
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
使用source .bashrc使其生效一下。
Windows:pip install virtualenvwrapper-win
```
**創建虛擬環境**
```
mkvirtualenv [virutalenv name]
mkvirtualenv -p python3 [virutalenv name] # 指定Python版本
```
**切換到某個虛擬環境:**
```
workon [virutalenv name]
```
**退出當前虛擬環境**
```
deactivate
```
**列出所有虛擬環境**
```
lsvirtualenv
```
**刪除某個虛擬環境**
```
rmvirtualenv [virutalenv name]
```
**創建虛擬環境的時候指定Python版本**
```
mkvirtualenv --python==C:\Python36\python.exe [virutalenv name]
```
### 修改mkvirtualenv的默認路徑
默認安裝到電腦中C盤的當前登錄用戶的Envs目錄下
在我的電腦->右鍵->屬性->高級系統設置->環境變量->系統變量中添加一個參數WORKON_HOME,將這個參數的值設置為你需要的路徑。
## pipenv
Windows安裝pipenv
```
pip install pipenv
```
Mac安裝
```
brew install pipenv
```
Linux安裝
```
pip install pipenv
```
### pipfile和pipfile.lock
Pipfile文件

```
url # 指定國內pip源,不然下載庫會很慢
dev-packages # 開發環境
packages # 生產環境
django = "*" # *表示最新版本
requires # Python版本
```
pipfile.lock,詳細記錄環境依賴,并且利用了Hash算法保證了它完整對應關系
如果需要指定Python版本的話,前提是電腦中已經安裝了python2和Python3
```
pipenv --three # 泛指Python3的版本
pipenv --two # 泛指Python2的版本
pipenv --python 3.7 # 指定Python版本
```
### 進入/退出/刪除虛擬環境
```
pipenv shell # 進入虛擬環境
exit # 退出虛擬環境
pipenv --rm # 刪除整個環境 不會刪除pipfile
```
### 管理開發環境
安裝在開發環境下
```
pipenv install --dev itchat
```
在虛擬環境中運行命令,使用run參數
```
pipenv run python manage.py runserver
```
pipenv有個缺點,lock不穩定而且時間非常長,所以安裝包的時候記得加上--skip-lock,最后開發完成要提價到倉庫的時候在pipenv lock
```
pipenv install django --skip-lock
```
- 空白目錄
- 1-Django前導知識
- 1-1-虛擬環境
- 1-2-Django框架介紹與環境搭建
- 2-URL與視圖
- 2-1-URL與視圖
- 3-模板
- 3-1-模板介紹
- 3-2-模板變量
- 3-3-常用標簽
- 3-4-模板常用過濾器
- 3-5-模板結構優化
- 3-6-加載靜態文件
- 4-數據庫
- 4-1-操作數據庫
- 4-2-圖書管理系統
- 4-3-ORM模型介紹
- 4-4-ORM模型的增刪改查
- 4-5-模型常用屬性
- 4-6-外鍵和表
- 4-7-查詢操作
- 4-8-QuerySet的方法
- 4-9-ORM模型練習
- 4-10-ORM模型遷移
- 5-視圖高級
- 1-Django限制請求method
- 2-頁面重定向
- 3-HttpRequest對象
- 4-HttpResponse對象
- 5-類視圖
- 6-錯誤處理
- 6-表單
- 1-用表單驗證數據
- 2-ModelForm
- 3-文件上傳
- 7-session和cookie
- 1-session和cookie
- 8-memcached
- 1-memcached
- 9-阿里云部署
- 阿里云部署