Python 中如何使用 virtualenv 管理虛擬環(huán)境
1. 什么是虛擬環(huán)境?
虛擬環(huán)境的意義,就如同 虛擬機(jī) 一樣,它可以實(shí)現(xiàn)不同環(huán)境中Python依賴包相互獨(dú)立,互不干擾。
舉個(gè)例子吧。
假設(shè)我們的電腦里有兩個(gè)項(xiàng)目,他們都用到同一個(gè)第三方包,本來(lái)一切都順利。但是由于某種原因,項(xiàng)目B由于某些原因要使用這個(gè)第三方包的一些新特性(新版本才有),而如果就這樣貿(mào)然升級(jí)了,對(duì)項(xiàng)目A的影響我們無(wú)法評(píng)估,這個(gè)時(shí)候我們就特別需要有一種解決方案可以讓項(xiàng)目A和B,處于兩個(gè)不同的Python環(huán)境中?;ゲ挥绊?。
為了方便大家對(duì)虛擬環(huán)境有個(gè)認(rèn)識(shí),我列舉了下其優(yōu)點(diǎn):
- 使不同應(yīng)用開(kāi)發(fā)環(huán)境獨(dú)立
- 環(huán)境升級(jí)不影響其他應(yīng)用,也不會(huì)影響全局的python環(huán)境
- 可以防止系統(tǒng)中出現(xiàn)包管理混亂和版本的沖突
市場(chǎng)上管理 Python 版本和環(huán)境的工具有很多,這里列舉幾個(gè):
- p:非常簡(jiǎn)單的交互式 python 版本管理工具。
- pyenv:簡(jiǎn)單的 Python 版本管理工具。
- Vex:可以在虛擬環(huán)境中執(zhí)行命令。
- virtualenv:創(chuàng)建獨(dú)立 Python 環(huán)境的工具。
- virtualenvwrapper:virtualenv 的一組擴(kuò)展。
工具很多,但個(gè)人認(rèn)為最好用的,當(dāng)屬 virtualenvwrapper,推薦大家也使用。
2. virtualenv
由于 virtualenvwrapper 是 virtualenv 的一組擴(kuò)展,所以如果要使用 virtualenvwrapper,就必須先安裝 virtualenv。
安裝基本使用*
由于virtualenv創(chuàng)建虛擬環(huán)境是在當(dāng)前環(huán)境下創(chuàng)建的。所以我們要準(zhǔn)備一個(gè)專門存放虛擬環(huán)境的目錄。(以下操作在Linux在完成,windows相對(duì)簡(jiǎn)單,請(qǐng)自行完成,有不明白的請(qǐng)微信與我聯(lián)系。)
創(chuàng)建
# 準(zhǔn)備目錄并進(jìn)入 $ mkdir -p /home/wangbm/Envs $ cd !$ # 創(chuàng)建虛擬環(huán)境(按默認(rèn)的Python版本) # 執(zhí)行完,當(dāng)前目錄下會(huì)有一個(gè)my_env01的目錄 $ virtualenv my_env01 # 你也可以指定版本 $ virtualenv -p /usr/bin/python2.7 my_env01 $ virtualenv -p /usr/bin/python3.6 my_env02 # 你肯定覺(jué)得每次都要指定版本,相當(dāng)麻煩吧? # 在Linux下,你可以把這個(gè)選項(xiàng)寫進(jìn)入環(huán)境變量中 $ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7" >> ~/.bashrc
進(jìn)入/退出
$ cd /home/wangbm/Envs # 進(jìn)入 $ source my_env01/bin/activate # 退出 $ deactivate
刪除
刪除虛擬環(huán)境,只需刪除對(duì)應(yīng)的文件夾就行了。并不會(huì)影響全局的Python和其他環(huán)境。
$ cd /home/wangbm/Envs $ rm -rf my_env01
注意:
創(chuàng)建的虛擬環(huán)境,不會(huì)包含原生全局環(huán)境的第三方包,其會(huì)保證新建虛擬環(huán)境的干凈。
如果你需要和全局環(huán)境使用相同的第三方包。可以使用如下方法:
# 導(dǎo)出依賴包 $ pip freeze > requirements.txt # 安裝依賴包 $ pip install -r requirements.txt
3. virtualenvwrapper
virtualenv 雖然已經(jīng)相當(dāng)好用了,可是功能還是不夠完善。
你可能也發(fā)現(xiàn)了,要進(jìn)入虛擬環(huán)境,必須得牢記之前設(shè)置的虛擬環(huán)境目錄,如果你每次按規(guī)矩來(lái),都將環(huán)境安裝在固定目錄下也沒(méi)啥事。但是很多情況下,人是會(huì)懶惰的,到時(shí)可能會(huì)有很多個(gè)虛擬環(huán)境散落在系統(tǒng)各處,你將有可能忘記它們的名字或者位置。
還有一點(diǎn),virtualenv 切換環(huán)境需要兩步,退出 -> 進(jìn)入。不夠簡(jiǎn)便。
為了解決這兩個(gè)問(wèn)題,virtualenvwrapper就誕生了。
安裝
# 安裝 - Linux pip install virtualenvwrapper # 安裝 - Windows pip install virtualenvwrapper-win
配置
先f(wàn)ind一下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 則新增環(huán)境變量:WORKON_HOME
基本語(yǔ)法:
mkvirtualenv [-a project_path] [-i package] [-r requirements_file] [virtualenv options] ENVNAME
常用方法
# 創(chuàng)建 $ mkvirtualenv my_env01 # 進(jìn)入 $ workon my_env01 # 退出 $ deactivate # 列出所有的虛擬環(huán)境,兩種方法 $ workon $ lsvirtualenv # 在虛擬環(huán)境內(nèi)直接切換到其他環(huán)境 $ workon my_env02 # 刪除虛擬環(huán)境 $ rmvirtualenv my_env01
其他命令
# 列出幫助文檔 $ virtualenvwrapper # 拷貝虛擬環(huán)境 $ cpvirtualenv ENVNAME [TARGETENVNAME] # 在所有的虛擬環(huán)境上執(zhí)行命令 $ allvirtualenv pip install -U pip # 刪除當(dāng)前環(huán)境的所有第三方包 $ wipeenv # 進(jìn)入到當(dāng)前虛擬環(huán)境的目錄 $ cdsitepackages # 進(jìn)入到當(dāng)前虛擬環(huán)境的site-packages目錄 $ cdvirtualenv # 顯示 site-packages 目錄中的內(nèi)容 $ lssitepackages
更多內(nèi)容,可查看 官方文檔
https://virtualenvwrapper.rea...
4. 實(shí)戰(zhàn)演示
以上內(nèi)容,是一份使用指南。接下來(lái),一起來(lái)看看,如何在項(xiàng)目中使用虛擬環(huán)境。
如何使用在我們的開(kāi)發(fā)中使用我們的虛擬環(huán)境呢
通常我們使用的場(chǎng)景有如下幾種
- 交互式中
- PyCharm中
- 工程中
接下來(lái),我將一一展示。
4.1 交互式中
先對(duì)比下,全局環(huán)境和虛擬環(huán)境的區(qū)別,全局環(huán)境中有requests包,而虛擬環(huán)境中并未安裝。
當(dāng)我們敲入 workon my_env01,前面有my_env01的標(biāo)識(shí),說(shuō)明我們已經(jīng)處在虛擬環(huán)境中。后面所有的操作,都將在虛擬環(huán)境下執(zhí)行。
4.2 工程項(xiàng)目中
我們的工程項(xiàng)目,都有一個(gè)入口文件,仔細(xì)觀察,其首行可以指定Python解釋器。
倘若我們要在虛擬環(huán)境中運(yùn)行這個(gè)項(xiàng)目,只要更改這個(gè)文件頭部即可。
現(xiàn)在我還是以,import requests 為例,來(lái)說(shuō)明,是否是在虛擬環(huán)境下運(yùn)行的,如果是,則和上面一樣,會(huì)報(bào)錯(cuò)。
文件內(nèi)容:
#!/root/.virtualenvs/my_env01/bin/python import requests print "ok"
運(yùn)行前,注意添加執(zhí)行權(quán)限。
$ chmod +x ming.py
好了。來(lái)執(zhí)行一下
$ ./ming.py
發(fā)現(xiàn)和預(yù)期一樣,真的報(bào)錯(cuò)了。說(shuō)明我們指定的虛擬環(huán)境有效果。
4.3 PyCharm中
點(diǎn)擊 File - Settings - Project - Interpreter
點(diǎn)擊小齒輪。如圖點(diǎn)擊添加,按提示添加一個(gè)虛擬環(huán)境。然后點(diǎn) OK 就可以使用這個(gè)虛擬環(huán)境,之后的項(xiàng)目都會(huì)在這個(gè)虛擬環(huán)境下運(yùn)行。
以上就是Python 中使用 virtualenv 管理虛擬環(huán)境的方法的詳細(xì)內(nèi)容,更多關(guān)于python 用virtualenv 管理虛擬環(huán)境的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python virtualenv虛擬環(huán)境實(shí)現(xiàn)過(guò)程解析
- python虛擬環(huán)境 virtualenv的簡(jiǎn)單使用
- python虛擬環(huán)境的安裝和配置(virtualenv,virtualenvwrapper)
- windows下python虛擬環(huán)境virtualenv安裝和使用詳解
- windows下安裝Python虛擬環(huán)境virtualenvwrapper-win
- Python開(kāi)發(fā)虛擬環(huán)境使用virtualenvwrapper的搭建步驟教程圖解
- Python虛擬環(huán)境virtualenv是如何使用的
相關(guān)文章
Python使用騰訊云API實(shí)現(xiàn)短信驗(yàn)證碼功能
使用Python與騰訊云接口對(duì)接,實(shí)現(xiàn)短信驗(yàn)證碼功能變得非常簡(jiǎn)單,只需要幾行代碼就能夠輕松實(shí)現(xiàn)短信的發(fā)送,無(wú)須關(guān)心復(fù)雜的短信協(xié)議和底層實(shí)現(xiàn),讀者可以根據(jù)自己的實(shí)際需求,靈活使用騰訊云短信SDK提供的API來(lái)實(shí)現(xiàn)更豐富的短信功能2024-01-01windows系統(tǒng)下Python環(huán)境搭建教程
這篇文章主要為大家詳細(xì)介紹了windows系統(tǒng)下Python環(huán)境搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Pytorch訓(xùn)練模型得到輸出后計(jì)算F1-Score 和AUC的操作
這篇文章主要介紹了Pytorch訓(xùn)練模型得到輸出后計(jì)算F1-Score 和AUC的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05Python二維列表的創(chuàng)建、轉(zhuǎn)換以及訪問(wèn)詳解
列表中的元素還可以是另一個(gè)列表,這種列表稱為多為列表,只有一層嵌套的多維列表稱為二維列表,下面這篇文章主要給大家介紹了關(guān)于Python二維列表的創(chuàng)建、轉(zhuǎn)換及訪問(wèn)的相關(guān)資料,需要的朋友可以參考下2022-04-04