Python 中如何使用 virtualenv 管理虛擬環境
1. 什麼是虛擬環境?
虛擬環境的意義,就如同 虛擬機 一樣,它可以實現不同環境中Python依賴包相互獨立,互不幹擾。
舉個例子吧。
假設我們的電腦裡有兩個項目,他們都用到同一個第三方包,本來一切都順利。但是由於某種原因,項目B由於某些原因要使用這個第三方包的一些新特性(新版本才有),而如果就這樣貿然升級瞭,對項目A的影響我們無法評估,這個時候我們就特別需要有一種解決方案可以讓項目A和B,處於兩個不同的Python環境中。互不影響。
為瞭方便大傢對虛擬環境有個認識,我列舉瞭下其優點:
- 使不同應用開發環境獨立
- 環境升級不影響其他應用,也不會影響全局的python環境
- 可以防止系統中出現包管理混亂和版本的沖突
市場上管理 Python 版本和環境的工具有很多,這裡列舉幾個:
- p:非常簡單的交互式 python 版本管理工具。
- pyenv:簡單的 Python 版本管理工具。
- Vex:可以在虛擬環境中執行命令。
- virtualenv:創建獨立 Python 環境的工具。
- virtualenvwrapper:virtualenv 的一組擴展。
工具很多,但個人認為最好用的,當屬 virtualenvwrapper,推薦大傢也使用。
2. virtualenv
由於 virtualenvwrapper 是 virtualenv 的一組擴展,所以如果要使用 virtualenvwrapper,就必須先安裝 virtualenv。
安裝基本使用*
由於virtualenv創建虛擬環境是在當前環境下創建的。所以我們要準備一個專門存放虛擬環境的目錄。(以下操作在Linux在完成,windows相對簡單,請自行完成,有不明白的請微信與我聯系。)
創建
# 準備目錄並進入 $ mkdir -p /home/wangbm/Envs $ cd !$ # 創建虛擬環境(按默認的Python版本) # 執行完,當前目錄下會有一個my_env01的目錄 $ virtualenv my_env01 # 你也可以指定版本 $ virtualenv -p /usr/bin/python2.7 my_env01 $ virtualenv -p /usr/bin/python3.6 my_env02 # 你肯定覺得每次都要指定版本,相當麻煩吧? # 在Linux下,你可以把這個選項寫進入環境變量中 $ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7" >> ~/.bashrc
進入/退出
$ cd /home/wangbm/Envs # 進入 $ source my_env01/bin/activate # 退出 $ deactivate
刪除
刪除虛擬環境,隻需刪除對應的文件夾就行瞭。並不會影響全局的Python和其他環境。
$ cd /home/wangbm/Envs $ rm -rf my_env01
註意:
創建的虛擬環境,不會包含原生全局環境的第三方包,其會保證新建虛擬環境的幹凈。
如果你需要和全局環境使用相同的第三方包。可以使用如下方法:
# 導出依賴包 $ pip freeze > requirements.txt # 安裝依賴包 $ pip install -r requirements.txt
3. virtualenvwrapper
virtualenv 雖然已經相當好用瞭,可是功能還是不夠完善。
你可能也發現瞭,要進入虛擬環境,必須得牢記之前設置的虛擬環境目錄,如果你每次按規矩來,都將環境安裝在固定目錄下也沒啥事。但是很多情況下,人是會懶惰的,到時可能會有很多個虛擬環境散落在系統各處,你將有可能忘記它們的名字或者位置。
還有一點,virtualenv 切換環境需要兩步,退出 -> 進入。不夠簡便。
為瞭解決這兩個問題,virtualenvwrapper就誕生瞭。
安裝
# 安裝 - Linux pip install virtualenvwrapper # 安裝 - Windows pip install virtualenvwrapper-win
配置
先find一下virtualenvwrapper.sh文件的位置
find / -name virtualenvwrapper.sh # /usr/bin/virtualenvwrapper.sh
若是 windows 則使用everything 查找 virtualenvwrapper.bat 腳本
D:\Program Files (x86)\Python38-32\Scripts\virtualenvwrapper.bat
在~/.bashrc 文件新增配置
export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/workspace export VIRTUALENVWRAPPER_SCRIPT=/usr/bin/virtualenvwrapper.sh source /usr/bin/virtualenvwrapper.sh
若是 windows 則新增環境變量:WORKON_HOME
基本語法:
mkvirtualenv [-a project_path] [-i package] [-r requirements_file] [virtualenv options] ENVNAME
常用方法
# 創建 $ mkvirtualenv my_env01 # 進入 $ workon my_env01 # 退出 $ deactivate # 列出所有的虛擬環境,兩種方法 $ workon $ lsvirtualenv # 在虛擬環境內直接切換到其他環境 $ workon my_env02 # 刪除虛擬環境 $ rmvirtualenv my_env01
其他命令
# 列出幫助文檔 $ virtualenvwrapper # 拷貝虛擬環境 $ cpvirtualenv ENVNAME [TARGETENVNAME] # 在所有的虛擬環境上執行命令 $ allvirtualenv pip install -U pip # 刪除當前環境的所有第三方包 $ wipeenv # 進入到當前虛擬環境的目錄 $ cdsitepackages # 進入到當前虛擬環境的site-packages目錄 $ cdvirtualenv # 顯示 site-packages 目錄中的內容 $ lssitepackages
更多內容,可查看 官方文檔
https://virtualenvwrapper.rea…
4. 實戰演示
以上內容,是一份使用指南。接下來,一起來看看,如何在項目中使用虛擬環境。
如何使用在我們的開發中使用我們的虛擬環境呢
通常我們使用的場景有如下幾種
- 交互式中
- PyCharm中
- 工程中
接下來,我將一一展示。
4.1 交互式中
先對比下,全局環境和虛擬環境的區別,全局環境中有requests包,而虛擬環境中並未安裝。
當我們敲入 workon my_env01,前面有my_env01的標識,說明我們已經處在虛擬環境中。後面所有的操作,都將在虛擬環境下執行。
4.2 工程項目中
我們的工程項目,都有一個入口文件,仔細觀察,其首行可以指定Python解釋器。
倘若我們要在虛擬環境中運行這個項目,隻要更改這個文件頭部即可。
現在我還是以,import requests 為例,來說明,是否是在虛擬環境下運行的,如果是,則和上面一樣,會報錯。
文件內容:
#!/root/.virtualenvs/my_env01/bin/python import requests print "ok"
運行前,註意添加執行權限。
$ chmod +x ming.py
好瞭。來執行一下
$ ./ming.py
發現和預期一樣,真的報錯瞭。說明我們指定的虛擬環境有效果。
4.3 PyCharm中
點擊 File – Settings – Project – Interpreter
點擊小齒輪。如圖點擊添加,按提示添加一個虛擬環境。然後點 OK 就可以使用這個虛擬環境,之後的項目都會在這個虛擬環境下運行。
以上就是Python 中使用 virtualenv 管理虛擬環境的方法的詳細內容,更多關於python 用virtualenv 管理虛擬環境的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Python虛擬環境virtualenv是如何使用的
- python 虛擬環境的創建與使用方法
- django虛擬環境(virtualenv)的創建
- windows server 2008 r2 標準版安裝python環境
- Python安裝及建立虛擬環境的完整步驟