Python虛擬環(huán)境終極(含PyCharm的使用教程)
一、為什么需要虛擬環(huán)境?
| 場(chǎng)景 | 問(wèn)題表現(xiàn) | 虛擬環(huán)境解決方案 |
|---|---|---|
| 多項(xiàng)目依賴(lài)沖突 | 項(xiàng)目A需要Django 3.2,項(xiàng)目B需要Django 4.1 | 隔離不同項(xiàng)目的依賴(lài)版本 |
| 全局包污染 | 系統(tǒng)Python被意外修改 | 創(chuàng)建獨(dú)立Python解釋器 |
| 團(tuán)隊(duì)協(xié)作標(biāo)準(zhǔn)化 | 不同成員環(huán)境不一致 | 統(tǒng)一requirements.txt |
| 生產(chǎn)環(huán)境部署 | 本地與服務(wù)器環(huán)境差異 | 精準(zhǔn)復(fù)現(xiàn)運(yùn)行環(huán)境 |
二、虛擬環(huán)境創(chuàng)建方式對(duì)比
| 工具 | 特點(diǎn) | 適用場(chǎng)景 |
|---|---|---|
| venv | Python 3.3+ 內(nèi)置 | 標(biāo)準(zhǔn)Python項(xiàng)目 |
| virtualenv | 兼容Python 2/3 | 舊版本兼容項(xiàng)目 |
| conda | 跨語(yǔ)言環(huán)境管理 | 數(shù)據(jù)科學(xué)/多語(yǔ)言項(xiàng)目 |
| pipenv | 集成包管理 | 簡(jiǎn)單項(xiàng)目依賴(lài)管理 |
三、命令行創(chuàng)建虛擬環(huán)境(venv)
3.1 基礎(chǔ)命令
# 創(chuàng)建環(huán)境, 當(dāng)前目錄路徑創(chuàng)建 python -m venv myenv # 激活環(huán)境 # Windows myenv\Scripts\activate # macOS/Linux source myenv/bin/activate # 安裝包 pip install django==3.2 # 退出環(huán)境 deactivate
3.2 環(huán)境管理
# 導(dǎo)出依賴(lài) pip freeze > requirements.txt # 復(fù)現(xiàn)環(huán)境 pip install -r requirements.txt # 刪除環(huán)境 rm -rf myenv # 直接刪除文件夾
四、PyCharm創(chuàng)建虛擬環(huán)境流程
4.1 圖文操作指南

4.2 詳細(xì)步驟說(shuō)明
打開(kāi)設(shè)置界面??
- Windows/Linux: File > Settings
- macOS: PyCharm > Preferences
??定位解釋器設(shè)置??
導(dǎo)航至:Project: <項(xiàng)目名> > Python Interpreter

添加新解釋器

??配置虛擬環(huán)境??
Location: 項(xiàng)目根目錄/.venv # 推薦路徑 Base interpreter: Python 3.9 Inherit global packages: 不勾選(避免污染) Make available to all projects: 不勾選(項(xiàng)目獨(dú)占)
??完成創(chuàng)建??
等待進(jìn)度條完成,新環(huán)境即生效
五、PyCharm環(huán)境管理技巧
| 功能 | 操作路徑 | 應(yīng)用場(chǎng)景 |
|---|---|---|
| 切換環(huán)境 | Run/Debug Configurations > Python interpreter | 多環(huán)境調(diào)試 |
| 導(dǎo)出requirements | Python Packages工具窗口 > 導(dǎo)出圖標(biāo) | 生成依賴(lài)清單 |
| 批量安裝依賴(lài) | 雙擊requirements.txt > Install All | 快速?gòu)?fù)現(xiàn)環(huán)境 |
| 環(huán)境復(fù)用 | 其他項(xiàng)目中選擇已有解釋器 | 共享標(biāo)準(zhǔn)環(huán)境 |
六、常見(jiàn)問(wèn)題解決方案
6.1 環(huán)境激活失敗
# Windows報(bào)錯(cuò)處理 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
6.2 依賴(lài)沖突處理
# 查看依賴(lài)樹(shù) pipdeptree # 強(qiáng)制解決沖突 pip install --force-reinstall package==version
七、最佳實(shí)踐建議
- ??命名規(guī)范??
.venv(項(xiàng)目?jī)?nèi)隱藏目錄)或 venv_項(xiàng)目名
- ??版本控制??
# 在.gitignore中添加 .venv/ venv*/
- ??依賴(lài)維護(hù)??
# 定期更新 pip list --outdated pip install -U package
- ??文檔化??
## 環(huán)境配置說(shuō)明 - Python版本: 3.9.12 - 激活命令: source .venv/bin/activate - 依賴(lài)安裝: pip install -r requirements.txt
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Python安裝pyecharts所遇的問(wèn)題及解決方法
今天小編就為大家分享一篇基于Python安裝pyecharts所遇的問(wèn)題及解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
Python DataFrame實(shí)現(xiàn)固定周期內(nèi)統(tǒng)計(jì)每列的非零值
在數(shù)據(jù)處理中,使用DataFrame統(tǒng)計(jì)固定周期內(nèi)每列的非零值數(shù)量是一種常見(jiàn)需求,通過(guò)將數(shù)據(jù)分組并使用計(jì)數(shù)函數(shù),可以方便地實(shí)現(xiàn)此目標(biāo),具體方法包括首先計(jì)算每列的0值個(gè)數(shù),然后通過(guò)總數(shù)減去0值個(gè)數(shù)得到非零值的數(shù)量2024-09-09
pycharm中加了斷點(diǎn)卻無(wú)法調(diào)試,直接執(zhí)行到程序結(jié)束如何解決
這篇文章主要介紹了pycharm中加了斷點(diǎn)卻無(wú)法調(diào)試,直接執(zhí)行到程序結(jié)束如何解決問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
詳解Python的Twisted框架中reactor事件管理器的用法
這篇文章主要介紹了詳解Python的Twisted框架中reactor事件管理器的用法,Twisted是一款高人氣的異步Python開(kāi)發(fā)框架,需要的朋友可以參考下2016-05-05
Python測(cè)試框架pytest核心庫(kù)pluggy詳解
這篇文章主要為大家介紹了Python測(cè)試框架pytest核心庫(kù)pluggy使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Python使用uuid庫(kù)生成唯一標(biāo)識(shí)ID
這篇文章主要介紹了Python使用uuid模塊生成唯一標(biāo)識(shí)ID,需要的朋友可以參考下2020-02-02

