python項目環(huán)境切換的幾種實現(xiàn)方式
1. 如何在不同python項目中,安裝不同的依賴
通過PyCharm創(chuàng)建python項目之后,在目錄下會自動創(chuàng)建虛擬環(huán)境.venv,從而解決項目依賴沖突的問題。簡而言之.venv是一個獨立的、隔離的python工作空間。
它里面包含了三個主要部分:
獨立的 Python 解釋器副本
- 在
.venv/bin/(Linux/Mac)或.venv/Scripts/(Windows)目錄下,會有一個python或python.exe文件。這是從你選擇的那個基礎(chǔ)Python(比如系統(tǒng)自帶的Python,或者你安裝的Anaconda中的Python)復(fù)制過來的一個副本。 - 當(dāng)你激活這個虛擬環(huán)境后,你在終端里輸入的
python或pip命令,指向的都是這個副本,而不是你電腦的全局Python。
- 在
獨立的包安裝目錄
- 在
.venv/lib/python3.x/site-packages/目錄下,是專門用來存放你為這個項目安裝的第三方庫的地方。 - 當(dāng)你在這個激活的虛擬環(huán)境中使用
pip install requests時,requests庫及其依賴就會被安裝到這個文件夾下,而完全不會影響到你電腦的全局Python環(huán)境或其他項目的虛擬環(huán)境。
- 在
環(huán)境配置腳本
- 同樣在
bin或Scripts目錄下,有用于激活(Activate) 和停用(Deactivate) 這個虛擬環(huán)境的腳本。
- 同樣在
2. 如何切換到不同項目的工作空間
Windows CMD
# 進入項目目錄 cd 你的項目路徑 # 激活虛擬環(huán)境 .venv\Scripts\activate # 安裝包(現(xiàn)在pip會使用虛擬環(huán)境中的) pip install 包名稱 # 退出虛擬環(huán)境 deactivate
3.創(chuàng)建項目是不同的選項,有三種選項

3.1 項目venv(虛擬環(huán)境)
腳本創(chuàng)建,也可以通過PyCharm創(chuàng)建
# 創(chuàng)建 python -m venv myproject_venv # 激活 (Windows) myproject_venv\Scripts\activate # 激活 (Linux/Mac) source myproject_venv/bin/activate
特點:
- 項目專屬,隔離在項目目錄內(nèi)
- 輕量級,只包含Python基礎(chǔ)環(huán)境和pip
- 依賴與系統(tǒng)Python完全隔離
- 適合單一項目開發(fā)
3.2 基礎(chǔ)conda環(huán)境
# 查看基礎(chǔ)環(huán)境 conda info # 在基礎(chǔ)環(huán)境中安裝包 conda install numpy
特點:
- Conda安裝時創(chuàng)建的默認(rèn)環(huán)境
- 全局共享,所有項目默認(rèn)使用
- 容易造成包沖突和版本污染
- 不推薦用于項目開發(fā)
3.3 自定義conda環(huán)境
# 創(chuàng)建自定義環(huán)境 conda create -n myenv python=3.9 # 激活環(huán)境 conda activate myenv # 安裝包 conda install pandas matplotlib
特點:
- 獨立的環(huán)境,可指定Python版本
- 可以創(chuàng)建多個不同用途的環(huán)境
- 支持非Python依賴(如C庫)
- 適合復(fù)雜項目和多版本需求
主要區(qū)別對比
| 特性 | 項目venv | 基礎(chǔ)conda | 自定義conda環(huán)境 |
|---|---|---|---|
| 隔離性 | 完全隔離 | 無隔離 | 完全隔離 |
| Python版本 | 繼承系統(tǒng)Python | 固定 | 可指定任意版本 |
| 包管理工具 | pip | conda/pip | conda/pip |
| 跨平臺 | 優(yōu)秀 | 優(yōu)秀 | 優(yōu)秀 |
| 依賴類型 | 僅Python | Python+非Python | Python+非Python |
| 資源占用 | 輕量 | 重量 | 中等 |
最佳實踐
- 永遠(yuǎn)不要在基礎(chǔ)conda環(huán)境中安裝項目依賴
- 為每個項目創(chuàng)建獨立環(huán)境
- 使用環(huán)境文件共享配置:
# conda conda env export > environment.yml conda env create -f environment.yml # venv pip freeze > requirements.txt pip install -r requirements.txt
選擇哪種方式取決于項目需求:簡單Python項目用venv,復(fù)雜數(shù)據(jù)科學(xué)項目或需要特定Python版本時用conda環(huán)境。
4.在自定義環(huán)境中,【從基礎(chǔ)解釋器繼承軟件包】和【可用于所有項目】兩個選項的區(qū)別
4.1 【從基礎(chǔ)解釋器繼承軟件包】
含義:
- 新環(huán)境會繼承基礎(chǔ)環(huán)境(base)中已安裝的所有包
- 相當(dāng)于創(chuàng)建一個"子環(huán)境",包含基礎(chǔ)環(huán)境的所有依賴
創(chuàng)建方式:
# 命令行方式(默認(rèn)行為) conda create -n myenv --clone base # 或者 conda create -n myenv
特點:
- ? 優(yōu)點:快速開始,無需重新安裝常用包
- ? 缺點:容易造成包沖突,環(huán)境不夠"干凈"
- ?? 文件位置:通常在conda的envs目錄下
使用場景:
- 需要基礎(chǔ)環(huán)境中的大量現(xiàn)有包
- 臨時測試或快速原型開發(fā)
4.2【可用于所有項目】
含義:
- 創(chuàng)建一個完全獨立、干凈的環(huán)境
- 不繼承任何現(xiàn)有環(huán)境的包
- 環(huán)境全局可用,任何項目都可以使用
創(chuàng)建方式:
# 創(chuàng)建干凈環(huán)境 conda create -n myenv python=3.9 --no-deps # 或者指定少量必要包 conda create -n myenv python=3.9 pip
特點:
- ? 優(yōu)點:環(huán)境干凈,避免包沖突
- ? 優(yōu)點:可重復(fù)性好,依賴明確
- ? 缺點:需要重新安裝所有依賴
- ?? 文件位置:在conda的envs目錄下,全局可訪問
4.3 實際對比示例
# 場景1:繼承基礎(chǔ)環(huán)境的包(不推薦) conda create -n inherited_env --clone base conda activate inherited_env conda list # 會顯示大量基礎(chǔ)環(huán)境的包 # 場景2:創(chuàng)建干凈環(huán)境(推薦) conda create -n clean_env python=3.9 pip conda activate clean_env conda list # 只顯示python和pip等基本包
4.4 選擇建議
選擇【繼承軟件包】的情況:
# 當(dāng)你確實需要基礎(chǔ)環(huán)境中的包時 conda create -n data_analysis --clone base conda activate data_analysis # 現(xiàn)在你已經(jīng)有了pandas, numpy等數(shù)據(jù)科學(xué)包
選擇【可用于所有項目】的情況:
# 大多數(shù)項目開發(fā)場景 conda create -n myproject python=3.9 conda activate myproject # 按需安裝依賴,保持環(huán)境干凈 conda install pandas numpy pip install -r requirements.txt
最佳實踐
推薦使用【可用于所有項目】:
- 環(huán)境干凈,依賴明確
- 避免隱式依賴帶來的問題
- 便于依賴管理和復(fù)現(xiàn)
使用環(huán)境文件確保一致性:
# environment.yml name: myproject dependencies: - python=3.9 - pip - pip: - -r requirements.txt項目結(jié)構(gòu)建議:
myproject/ ├── environment.yml # Conda環(huán)境配置 ├── requirements.txt # Pip依賴 └── src/
總結(jié):對于正式項目開發(fā),強烈建議選擇【可用于所有項目】創(chuàng)建干凈環(huán)境,這樣可以確保依賴管理的清晰和項目的可復(fù)現(xiàn)性。
到此這篇關(guān)于python項目環(huán)境切換的幾種實現(xiàn)方式的文章就介紹到這了,更多相關(guān)python 環(huán)境切換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?Pandas數(shù)據(jù)處理高頻操作詳解
這篇文章主要為大家整理了一些Python?Pandas數(shù)據(jù)處理高頻操作,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下2022-06-06
Django 權(quán)限管理(permissions)與用戶組(group)詳解
這篇文章主要介紹了Django 權(quán)限管理(permissions)與用戶組(group)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
python動態(tài)網(wǎng)站爬蟲實戰(zhàn)(requests+xpath+demjson+redis)
本文主要介紹了python動態(tài)網(wǎng)站爬蟲實戰(zhàn)(requests+xpath+demjson+redis),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
Pycharm安裝第三方庫時Non-zero exit code錯誤解決辦法
這篇文章主要介紹了Pycharm安裝第三方庫時Non-zero exit code錯誤解決辦法,最好的解決辦法可以通過“Pycharm”左下角的“Terminal”,在pycharm內(nèi)使用pip安裝,以安裝“requests”為例,需要的朋友可以參考下2023-01-01
聊聊python中令人迷惑的duplicated和drop_duplicates()用法
這篇文章主要介紹了聊聊python中令人迷惑的duplicated和drop_duplicates()用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
pandas實現(xiàn)處理TB級別的數(shù)據(jù)
這篇文章主要介紹了pandas實現(xiàn)處理TB級別的數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04

