python常見(jiàn)環(huán)境管理工具超全解析
1. conda
- 功能:管理 Python 及多語(yǔ)言環(huán)境、依賴包、虛擬環(huán)境,可安裝底層二進(jìn)制庫(kù)。
- 適用場(chǎng)景:科學(xué)計(jì)算、數(shù)據(jù)分析、機(jī)器學(xué)習(xí)等依賴復(fù)雜的項(xiàng)目,需隔離環(huán)境或解決 pip 難裝依賴時(shí)。
- 常見(jiàn)用法:
conda create -n myenv python=3.10 conda activate myenv conda install numpy pandas conda list conda env remove -n myenv
2. pip
- 功能:官方包管理工具,安裝/升級(jí)/卸載 PyPI 包,支持 requirements.txt。
- 適用場(chǎng)景:純 Python 項(xiàng)目,配合 venv/virtualenv 進(jìn)行輕量隔離。
- 常見(jiàn)用法:
pip install requests pip install -r requirements.txt pip freeze > requirements.txt pip uninstall numpy
3. uv
- 功能:新一代 Python 包與環(huán)境管理工具,自動(dòng)創(chuàng)建/管理虛擬環(huán)境,自動(dòng)解析依賴文件,兼容 pip 命令。
- 適用場(chǎng)景:需要快速搭建、隔離和管理項(xiàng)目環(huán)境,自動(dòng)識(shí)別依賴文件,適合現(xiàn)代開(kāi)發(fā)。
- 常見(jiàn)用法:
uv pip install requests uv run server.py uv --python /path/to/python run app.py uv pip freeze > requirements.txt
uv 工具自動(dòng)創(chuàng)建和管理環(huán)境的特點(diǎn)
- 自動(dòng)檢測(cè)和創(chuàng)建虛擬環(huán)境:在項(xiàng)目目錄下運(yùn)行 uv 命令時(shí),若無(wú)
.venv
文件夾,uv 會(huì)自動(dòng)用當(dāng)前或指定 Python 解釋器創(chuàng)建.venv
虛擬環(huán)境。 - 自動(dòng)激活和使用環(huán)境:uv 會(huì)自動(dòng)在本地
.venv
虛擬環(huán)境中執(zhí)行所有操作,無(wú)需手動(dòng)激活。 - 依賴自動(dòng)解析與安裝:uv 會(huì)自動(dòng)識(shí)別
pyproject.toml
、requirements.txt
、setup.py
等依賴文件,自動(dòng)安裝依賴。 - 支持指定 Python 版本:可通過(guò)
uv run --python 路徑 xxx.py
指定 Python 解釋器。 - 環(huán)境隔離徹底:每個(gè)項(xiàng)目獨(dú)立
.venv
,互不干擾。
4. setup.py
- 功能:傳統(tǒng)項(xiàng)目構(gòu)建與分發(fā)腳本,聲明元數(shù)據(jù)、依賴、入口,構(gòu)建 wheel/源碼包。
- 適用場(chǎng)景:需要發(fā)布為 PyPI 包的老項(xiàng)目,兼容 setuptools 工具鏈。
- 常見(jiàn)用法:
python setup.py install python setup.py sdist bdist_wheel pip install .
5. pyproject.toml
- 功能:現(xiàn)代項(xiàng)目標(biāo)準(zhǔn)配置文件,聲明元數(shù)據(jù)、依賴、構(gòu)建后端,統(tǒng)一管理。
- 適用場(chǎng)景:新項(xiàng)目推薦,配合 poetry、flit、hatch、setuptools(新版)等現(xiàn)代工具。
- 常見(jiàn)用法:
[project] name = "demo" version = "0.1.0" dependencies = ["numpy>=1.23", "requests"] [build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta"
conda 與 uv 優(yōu)缺點(diǎn)詳細(xì)對(duì)比
對(duì)比項(xiàng) | conda | uv |
---|---|---|
適用范圍 | 支持 Python、R、C/C++ 等多語(yǔ)言環(huán)境,能管理二進(jìn)制依賴 | 專注于 Python,自動(dòng)管理 Python 虛擬環(huán)境和依賴 |
環(huán)境隔離 | 支持虛擬環(huán)境,環(huán)境可跨項(xiàng)目復(fù)用 | 每項(xiàng)目自動(dòng)創(chuàng)建 .venv ,強(qiáng)隔離,互不干擾 |
依賴管理 | 支持 Python 包和 C/C++/Fortran 等底層庫(kù)的安裝 | 僅支持 Python 包,依賴解析快,自動(dòng)識(shí)別 pyproject.toml/requirements |
包源 | 默認(rèn)用 Anaconda/Conda Forge 鏡像,包體積大,更新慢 | 用 PyPI,包全且新,安裝速度快 |
安裝速度 | 較慢,尤其是首次安裝和大包 | 極快,依賴解析和安裝速度遠(yuǎn)超 pip/conda |
跨平臺(tái)支持 | Windows、Linux、Mac,適合科學(xué)計(jì)算環(huán)境 | Windows、Linux、Mac,適合開(kāi)發(fā)和部署 |
非 Python 依賴 | 可直接安裝 OpenCV、MKL、CUDA 等系統(tǒng)庫(kù) | 不支持非 Python 庫(kù)安裝 |
磁盤(pán)占用 | 環(huán)境可共用,節(jié)省空間(但大包體積大) | 每項(xiàng)目一環(huán)境,包有重復(fù),隔離性強(qiáng)但空間占用高 |
學(xué)習(xí)曲線 | 命令多,配置復(fù)雜,適合數(shù)據(jù)科學(xué)/科研用戶 | 命令簡(jiǎn)單,自動(dòng)化高,適合開(kāi)發(fā)者和現(xiàn)代 Python 項(xiàng)目 |
生態(tài)集成 | 與 Jupyter、Spyder、VSCode 集成良好 | 與現(xiàn)代 Python 工具鏈(如 pyproject.toml、poetry)集成 |
典型場(chǎng)景 | 科學(xué)計(jì)算、數(shù)據(jù)分析、需底層庫(kù)支持的項(xiàng)目 | Web開(kāi)發(fā)、通用 Python 項(xiàng)目、現(xiàn)代依賴管理 |
總結(jié)建議
- conda 適合科學(xué)計(jì)算、跨語(yǔ)言、多依賴和底層庫(kù)需求多的場(chǎng)景。
- uv 適合現(xiàn)代 Python 項(xiàng)目開(kāi)發(fā)、自動(dòng)化、依賴隔離和快速部署。
總結(jié)與選擇建議
- conda:適合科學(xué)計(jì)算、跨語(yǔ)言依賴、需管理底層庫(kù)時(shí)用
- pip + venv/virtualenv:輕量項(xiàng)目、純 Python 項(xiàng)目首選
- uv:現(xiàn)代項(xiàng)目推薦,自動(dòng)識(shí)別依賴,集成 pip/venv 優(yōu)點(diǎn)
- setup.py:老項(xiàng)目/需兼容傳統(tǒng) PyPI 分發(fā)時(shí)用
- pyproject.toml:新項(xiàng)目推薦,統(tǒng)一依賴和元數(shù)據(jù)聲明,配合 uv/poetry/setuptools 使用
到此這篇關(guān)于python常見(jiàn)環(huán)境管理工具的文章就介紹到這了,更多相關(guān)python環(huán)境管理工具內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中的CSV文件使用"with"語(yǔ)句的方式詳解
with語(yǔ)句的主要用法是對(duì)語(yǔ)句中使用的對(duì)象進(jìn)行異常安全的清除.確保文件已關(guān)閉,鎖定已釋放,上下文恢復(fù)等.本文通過(guò)實(shí)例代碼給大家介紹Python中的CSV文件使用"with"語(yǔ)句的相關(guān)知識(shí),感興趣的朋友一起看看吧2018-10-10python實(shí)現(xiàn)模擬按鍵,自動(dòng)翻頁(yè)看u17漫畫(huà)
這篇文章主要介紹了python實(shí)現(xiàn)模擬按鍵,自動(dòng)翻頁(yè)看u17漫畫(huà),十分簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-03-03Python爬蟲(chóng)模擬登陸嗶哩嗶哩(bilibili)并突破點(diǎn)選驗(yàn)證碼功能
這篇文章主要介紹了Python爬蟲(chóng)模擬登陸嗶哩嗶哩(bilibili)并突破點(diǎn)選驗(yàn)證碼功能,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12Python實(shí)現(xiàn)統(tǒng)計(jì)單詞出現(xiàn)的個(gè)數(shù)
這篇文章主要介紹了Python實(shí)現(xiàn)統(tǒng)計(jì)單詞出現(xiàn)的個(gè)數(shù),本文給出了實(shí)現(xiàn)代碼以及使用方法,需要的朋友可以參考下2015-05-05詳解python3中socket套接字的編碼問(wèn)題解決
本篇文章主要介紹了詳解python3中socket套接字的編碼問(wèn)題解決,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07python如何實(shí)現(xiàn)單向鏈表及單向鏈表的反轉(zhuǎn)
這篇文章主要介紹了python如何實(shí)現(xiàn)單向鏈表及單向鏈表的反轉(zhuǎn),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03Python3實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲
這篇文章主要為大家詳細(xì)介紹了Python3實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04