python創(chuàng)建虛擬環(huán)境的3種方式
在 Python 開(kāi)發(fā)中,主要有三種創(chuàng)建虛擬環(huán)境的方式,它們各有特點(diǎn)和適用場(chǎng)景。下面為你詳細(xì)介紹每種方式:
1.conda
Conda 是一個(gè)跨平臺(tái)的包管理器和環(huán)境管理器,由 Anaconda 發(fā)行版引入。
特點(diǎn):
- 不僅僅是 Python:可以管理其他語(yǔ)言和工具的依賴
- 預(yù)編譯包:許多科學(xué)計(jì)算包有預(yù)編譯版本,安裝速度快
- 環(huán)境隔離徹底:包括系統(tǒng)庫(kù)級(jí)別的隔離
安裝:
# 安裝 Miniconda(輕量版)或 Anaconda(完整版)
# 下載地址:https://docs.conda.io/en/latest/miniconda.html
使用方法:
# 創(chuàng)建環(huán)境(默認(rèn)使用 conda 源) conda create -n myenv python=3.9 # 創(chuàng)建環(huán)境并指定包 conda create -n myenv python=3.9 numpy pandas # 激活環(huán)境 conda activate myenv # Windows/Linux/macOS # 退出環(huán)境 conda deactivate # 列出所有環(huán)境 conda env list # 刪除環(huán)境 conda remove -n myenv --all # 導(dǎo)出環(huán)境配置 conda env export > environment.yml # 從配置創(chuàng)建環(huán)境 conda env create -f environment.yml
優(yōu)點(diǎn):
- 處理復(fù)雜依賴關(guān)系能力強(qiáng)
- 支持非 Python 包(如 R、C++庫(kù))
- 二進(jìn)制包安裝,減少編譯問(wèn)題
- 跨平臺(tái)一致性較好
缺點(diǎn):
- 環(huán)境體積較大
- 社區(qū)版可能有些包更新不及時(shí)
2.pyenv + pyenv-virtualenv
這是兩個(gè)工具的組合:
- pyenv:管理多個(gè) Python 版本
- pyenv-virtualenv:為不同項(xiàng)目創(chuàng)建虛擬環(huán)境
安裝:
# macOS brew install pyenv pyenv-virtualenv # Linux git clone https://github.com/pyenv/pyenv.git ~/.pyenv git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
配置 Shell(~/.bashrc 或 ~/.zshrc):
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
使用方法:
# 安裝指定 Python 版本 pyenv install 3.9.13 # 列出已安裝版本 pyenv versions # 創(chuàng)建虛擬環(huán)境(基于特定 Python 版本) pyenv virtualenv 3.9.13 myproject-3.9 # 激活環(huán)境 pyenv activate myproject-3.9 # 退出環(huán)境 pyenv deactivate # 設(shè)置項(xiàng)目本地環(huán)境(進(jìn)入目錄自動(dòng)激活) cd myproject pyenv local myproject-3.9 # 刪除環(huán)境 pyenv uninstall myproject-3.9
優(yōu)點(diǎn):
- 完美解決多版本 Python 共存問(wèn)題
- 項(xiàng)目級(jí)自動(dòng)激活很方便
- 輕量級(jí),只管理 Python 環(huán)境
缺點(diǎn):
- 需要額外配置
- 只管理 Python,不處理其他依賴
3.venv(Python 內(nèi)置)
Python 3.3+ 內(nèi)置的虛擬環(huán)境工具,無(wú)需額外安裝。
特點(diǎn):
- 標(biāo)準(zhǔn)庫(kù)自帶:無(wú)需額外安裝
- 輕量簡(jiǎn)單:功能專一
- Python 官方推薦
使用方法:
# 創(chuàng)建虛擬環(huán)境 python -m venv myenv # 或指定 Python 版本 python3.9 -m venv myenv # 激活環(huán)境 # Windows: myenv\Scripts\activate # Linux/macOS: source myenv/bin/activate # 退出環(huán)境 deactivate # 創(chuàng)建帶系統(tǒng) site-packages 的環(huán)境(可訪問(wèn)系統(tǒng)包) python -m venv --system-site-packages myenv # 升級(jí) pip 等工具 python -m venv --upgrade myenv
文件結(jié)構(gòu):
myenv/ ├── bin/ (或 Scripts/ 在 Windows) │ ├── activate │ ├── pip │ ├── python │ └── ... ├── lib/ │ └── python3.9/site-packages/ └── pyvenv.cfg
優(yōu)點(diǎn):
- 無(wú)需安裝,Python 自帶
- 簡(jiǎn)單易用,學(xué)習(xí)成本低
- 官方維護(hù),兼容性好
缺點(diǎn):
- 不能管理 Python 版本本身
- 功能相對(duì)簡(jiǎn)單
其他插件/工具
virtualenv(第三方,venv 的前身)
# 安裝 pip install virtualenv # 使用 virtualenv myenv source myenv/bin/activate
pipenv
結(jié)合了 pip 和虛擬環(huán)境管理
# 安裝 pip install pipenv # 使用 cd myproject pipenv --python 3.9 # 創(chuàng)建環(huán)境 pipenv install requests # 安裝包 pipenv shell # 激活環(huán)境 pipenv lock # 生成鎖文件
Poetry
現(xiàn)代 Python 包管理和依賴管理
# 安裝 pip install poetry # 使用 poetry new myproject # 創(chuàng)建新項(xiàng)目 poetry install # 安裝依賴 poetry add requests # 添加包 poetry shell # 激活環(huán)境
對(duì)比與選擇建議
| 工具 | 適用場(chǎng)景 | 優(yōu)點(diǎn) | 缺點(diǎn) |
|---|---|---|---|
| conda | 數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、需要非Python依賴 | 依賴管理強(qiáng)大,預(yù)編譯包多 | 體積大,有些包更新慢 |
| pyenv+virtualenv | 多版本Python開(kāi)發(fā),項(xiàng)目隔離 | Python版本管理優(yōu)秀,輕量 | 需要配置,只管理Python |
| venv | 簡(jiǎn)單Python項(xiàng)目,標(biāo)準(zhǔn)開(kāi)發(fā) | 內(nèi)置無(wú)需安裝,簡(jiǎn)單直接 | 不能管理Python版本 |
| pipenv/Poetry | 現(xiàn)代化項(xiàng)目管理,依賴鎖定 | 依賴管理先進(jìn),整合性好 | 學(xué)習(xí)曲線稍陡 |
推薦選擇:
- 初學(xué)者/簡(jiǎn)單項(xiàng)目:使用
venv,簡(jiǎn)單夠用 - 數(shù)據(jù)科學(xué)/AI項(xiàng)目:使用
conda,依賴管理方便 - Web開(kāi)發(fā)/多版本項(xiàng)目:使用
pyenv + virtualenv或Poetry - 團(tuán)隊(duì)協(xié)作項(xiàng)目:考慮
Poetry或pipenv,有 lock 文件保證一致性
每種工具都可以配合使用,比如用 pyenv 管理 Python 版本,用 venv 創(chuàng)建虛擬環(huán)境。選擇最適合你工作流的方式即可。
到此這篇關(guān)于python創(chuàng)建虛擬環(huán)境的3種方式的文章就介紹到這了,更多相關(guān)python創(chuàng)建虛擬環(huán)境內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python自帶的venv模塊創(chuàng)建虛擬環(huán)境全流程
- python創(chuàng)建虛擬環(huán)境的常用命令與使用
- python中虛擬環(huán)境創(chuàng)建的主流方式詳細(xì)操作指南
- Python中conda虛擬環(huán)境創(chuàng)建及使用小結(jié)
- Python虛擬環(huán)境創(chuàng)建和使用方法(使用自帶的venv模塊)
- python虛擬環(huán)境多種創(chuàng)建方式圖文詳解
- Python使用virtualenv創(chuàng)建虛擬環(huán)境的詳細(xì)步驟
- 使用Anaconda創(chuàng)建Python指定版本的虛擬環(huán)境的教程詳解
相關(guān)文章
PyPDF2讀取PDF文件內(nèi)容保存到本地TXT實(shí)例
這篇文章主要介紹了PyPDF2讀取PDF文件內(nèi)容保存到本地TXT實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
利用Python編寫(xiě)一個(gè)自動(dòng)化部署工具
這篇文章主要為大家詳細(xì)介紹了如何利用Python編寫(xiě)一個(gè)自動(dòng)化部署工具,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以了解一下2023-07-07
python腳本內(nèi)運(yùn)行l(wèi)inux命令的方法
這篇文章主要介紹了python腳本內(nèi)運(yùn)行l(wèi)inux命令的方法,實(shí)例分析了Python基于subprocess模塊操作Linux命令的相關(guān)技巧,需要的朋友可以參考下2015-07-07
python 解析XML python模塊xml.dom解析xml實(shí)例代碼
這篇文章主要介紹了分享下python中使用模塊xml.dom解析xml文件的實(shí)例代碼,學(xué)習(xí)下python解析xml文件的方法,有需要的朋友參考下2014-02-02
python中各種常見(jiàn)文件的讀寫(xiě)操作與類型轉(zhuǎn)換詳細(xì)指南
這篇文章主要為大家詳細(xì)介紹了python中各種常見(jiàn)文件(txt,xls,csv,sql,二進(jìn)制文件)的讀寫(xiě)操作與類型轉(zhuǎn)換,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04
詳談在flask中使用jsonify和json.dumps的區(qū)別
下面小編就為大家分享一篇詳談在flask中使用jsonify和json.dumps的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
Python Collatz序列實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Python Collatz序列實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
redis數(shù)據(jù)庫(kù)及與python交互用法簡(jiǎn)單示例
這篇文章主要介紹了redis數(shù)據(jù)庫(kù)及與python交互用法,結(jié)合實(shí)例形式分析了Redis數(shù)據(jù)庫(kù)的基本類型、操作以及Python針對(duì)Redis數(shù)據(jù)庫(kù)的連接、增刪改查等相關(guān)操作技巧,需要的朋友可以參考下2019-11-11
django數(shù)據(jù)庫(kù)報(bào)錯(cuò)解決匯總:django.db.utils.OperationalError?1045,1049,
這篇文章主要給大家介紹了關(guān)于django數(shù)據(jù)庫(kù)報(bào)錯(cuò)解決:django.db.utils.OperationalError?1045,1049,2003的相關(guān)資料,文中將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
解決Django no such table: django_session的問(wèn)題
這篇文章主要介紹了解決Django no such table: django_session的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04

