一、什么是虛擬環(huán)境
1. 什么是Python環(huán)境
要搞清楚什么是虛擬環(huán)境,首先要清楚Python的環(huán)境指的是什么。當(dāng)我們?cè)趫?zhí)行python test.py時(shí),思考如下問題:
python哪里來?這個(gè)主要?dú)w功于配置的系統(tǒng)環(huán)境變量PATH,當(dāng)我們?cè)诿钚兄羞\(yùn)行程序時(shí),系統(tǒng)會(huì)根據(jù)PATH配置的路徑列表依次查尋是否有
可執(zhí)行文件python(在windows中,省略了后綴.exe),當(dāng)查尋到該文件時(shí),執(zhí)行該文件; 如果在所有路徑列表中都查找不到,
就會(huì)報(bào)報(bào)錯(cuò):'python' 不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件。
test.py代碼中import的模塊在哪里找?
import的模塊包含兩類,
一類稱為標(biāo)準(zhǔn)庫(kù),隨著python的安裝而安裝;
另一類稱為第三方庫(kù),使用pip工具或者自己手動(dòng)安裝的包。
模塊的搜索路徑可通過sys.path查看,主要由可執(zhí)行文件python所在的位置所決定。
Python環(huán)境主要包括以下內(nèi)容:
解釋器 python.exe
Lib目錄
標(biāo)準(zhǔn)庫(kù)
site-pakages目錄,默認(rèn)安裝第三方庫(kù)所在的目錄
Scripts目錄,包含一些執(zhí)行文件
包安裝管理工具pip.exe
打包工具pyinstaller.exe(需要自己安裝)
…
其他
主要包括python解釋器運(yùn)行時(shí)需要的相關(guān)依賴文件,文檔說明等
Python環(huán)境主要由運(yùn)行python解釋器的位置所決定
2. 什么是虛擬環(huán)境
理解了什么是python環(huán)境,思考下為什么有虛擬環(huán)境的說法。思考以下問題:
有兩個(gè)項(xiàng)目A和B,如果A和B都要用到某一模塊,但版本不相同怎么辦?
在使用pip安裝包時(shí),會(huì)發(fā)現(xiàn)在安裝的時(shí)候會(huì)安裝其它的依賴包,但當(dāng)我們用pip移除一個(gè)包時(shí),卻只移除了指定的包
為了解決上面的問題,python使用了虛擬環(huán)境這個(gè)概念,你可以認(rèn)為是python環(huán)境的多個(gè)副本,只是在不同的副本中安裝了不同的包。
既然叫虛擬環(huán)境,總得有點(diǎn)不一樣:
虛擬環(huán)境中一般不包含標(biāo)準(zhǔn)庫(kù);
不包含python解釋器運(yùn)行時(shí)所需的依賴文件;可執(zhí)行文件全部放于Scripts目錄等。
3. 常用工具
知道了什么是虛擬環(huán)境,就應(yīng)該清楚如何去管理虛擬環(huán)境,這就離不開虛擬環(huán)境管理工具,下面列出了一些常用的工具,并在稍后的內(nèi)容中
對(duì)部分工具的使用作簡(jiǎn)單的介紹。
Virtualenv
virtualenv 是非常流行的 python 虛擬環(huán)境配置工具。它不僅同時(shí)支持 python2 和 python3,而且可以為每個(gè)虛擬環(huán)境指定 python 解釋器,
并選擇不繼承基礎(chǔ)版本的包。
venv
考慮到虛擬環(huán)境的重要性,Python 從3.3 版本開始,自帶了一個(gè)虛擬環(huán)境模塊 venv,關(guān)于該模塊的詳細(xì)介紹,可參考 PEP-405 。
它的很多操作都和 virtualenv 類似。如果你使用的是python3.3之前版本或者是python2,則不能使用該功能,
依賴需要利用virtualenv進(jìn)行虛擬環(huán)境管理。
pipenv
pipenv 是Kenneth Reitz(requests的作者)大神的作品。它結(jié)合了 Pipfile,pip,和virtualenv,能夠有效管理Python多個(gè)環(huán)境,各種包。
并且windows視為一等公民。
Pipfile是社區(qū)擬定的依賴管理文件,用于替代過于簡(jiǎn)陋的 requirements.txt 文件。
Pipfile 文件是 TOML 格式而不是 requirements.txt 這樣的純文本。
virtualenv能夠很好的完成虛擬環(huán)境的搭建和python版本的管理,但是跨平臺(tái)的使用不太一致,且有時(shí)候處理包之間的依賴總存在問題
pip能夠很好的完成包的管理,但是仍然推薦pipenv,相當(dāng)于virtualenv和pip的合體,且更加強(qiáng)大。
conda
支持Python、R、Java、JavaScript、C等多種開發(fā)語言的包、依賴和環(huán)境管理工具,能運(yùn)行在Windows、MacOS、Linux多個(gè)平臺(tái),
可以在本地輕松創(chuàng)建、保存、切換環(huán)境。當(dāng)安裝anaconda時(shí),會(huì)自動(dòng)安裝conda工具。
Python Launcher for Windows
Python 從3.3版本開始,在 Windows 系統(tǒng)中自帶了一個(gè) py.exe啟動(dòng)工具。如果你是使用 Python.org 官網(wǎng)下載的安裝包安裝的 Python 3.3
(或更新版本)環(huán)境,那么可以直接在命令提示符中使用這個(gè)工具(在windows中,py.exe會(huì)安裝在C:\Windows目錄)。
py 可以打開默認(rèn)的 python 提示符; py -2.7 和 py -3 打開對(duì)應(yīng)的 Python 版本,py -0將列出系統(tǒng)中安裝了哪些版本的python
————————————————
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。
原文鏈接:https://blog.csdn.net/weixin_42118352/article/details/129281671