最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 虛擬環(huán)境完全指南:venv、virtualenv 與 Conda詳解

 更新時(shí)間:2026年05月15日 09:06:58   作者:Robot_Nav  
文章詳細(xì)介紹了Python的虛擬環(huán)境及其管理工具,文章還提供了創(chuàng)建、激活、導(dǎo)出、刪除環(huán)境等操作指導(dǎo),以及最佳實(shí)踐和參考命令,感興趣的朋友跟隨小編一起看看吧

1. 虛擬環(huán)境概述

1.1 什么是虛擬環(huán)境

虛擬環(huán)境是一個(gè)獨(dú)立的 Python 運(yùn)行環(huán)境,它允許你在同一臺(tái)機(jī)器上為不同的項(xiàng)目安裝不同的包和版本,而不會(huì)相互干擾。每個(gè)虛擬環(huán)境都擁有自己的 Python 解釋器副本、pip 包管理器以及獨(dú)立的第三方庫(kù)目錄。

1.2 為什么需要虛擬環(huán)境

虛擬環(huán)境主要解決 Python 開(kāi)發(fā)中的三個(gè)關(guān)鍵問(wèn)題:

  • 依賴隔離:每個(gè)項(xiàng)目擁有獨(dú)立的包安裝空間,安裝某包的特定版本不會(huì)影響系統(tǒng) Python 或其他項(xiàng)目。
  • 版本管理:不同項(xiàng)目可以使用不同的 Python 版本。一個(gè)機(jī)器學(xué)習(xí)項(xiàng)目可能需要 Python 3.11 以獲得更好性能,而遺留代碼庫(kù)可能需要 Python 3.8 來(lái)兼容舊庫(kù)。
  • 可復(fù)現(xiàn)性:通過(guò)導(dǎo)出依賴列表,團(tuán)隊(duì)成員可以在不同機(jī)器上精確復(fù)現(xiàn)同一套開(kāi)發(fā)環(huán)境,消除"在我機(jī)器上可以運(yùn)行"的問(wèn)題。

如果不使用虛擬環(huán)境,在全局安裝不兼容的包可能導(dǎo)致系統(tǒng)工具不可用,嚴(yán)重時(shí)甚至需要重裝操作系統(tǒng)。

2. venv 模塊詳解

2.1 簡(jiǎn)介

venv 是 Python 標(biāo)準(zhǔn)庫(kù)自帶的虛擬環(huán)境管理模塊,從 Python 3.3 開(kāi)始引入。它無(wú)需額外安裝,是 Python 官方推薦的默認(rèn)虛擬環(huán)境管理方式。

2.2 創(chuàng)建虛擬環(huán)境

進(jìn)入項(xiàng)目目錄,執(zhí)行以下命令創(chuàng)建虛擬環(huán)境:

python -m venv myenv

該命令會(huì)創(chuàng)建一個(gè) myenv 目錄,其中包含:Python 解釋器的副本、標(biāo)準(zhǔn)庫(kù)、pip 包管理器以及用于激活環(huán)境的腳本。

指定 Python 版本:當(dāng)系統(tǒng)存在多個(gè) Python 安裝時(shí),可以通過(guò)指定 Python 版本來(lái)創(chuàng)建環(huán)境:

# 使用 Python 3.11 創(chuàng)建虛擬環(huán)境
python3.11 -m venv myenv

venv 會(huì)使用所調(diào)用 Python 解釋器的版本來(lái)創(chuàng)建環(huán)境,因此只需調(diào)用對(duì)應(yīng)的 python3.x 命令即可切換版本。

重要說(shuō)明:venv 創(chuàng)建的虛擬環(huán)境會(huì)固定到創(chuàng)建時(shí)所使用的 Python 版本。如需使用不同版本的 Python,可以加載對(duì)應(yīng)的 Python 模塊后再創(chuàng)建,或轉(zhuǎn)而使用 Conda。

常用創(chuàng)建選項(xiàng)

選項(xiàng)說(shuō)明
--system-site-packages允許虛擬環(huán)境訪問(wèn)系統(tǒng)全局安裝的包
--clear如果環(huán)境目錄已存在,先清空再創(chuàng)建
--upgrade使用最新的 Python 可執(zhí)行文件升級(jí)環(huán)境

2.3 激活虛擬環(huán)境

激活方式因操作系統(tǒng)而異:

Linux / macOS

source myenv/bin/activate

Windows Command Prompt

myenv\Scripts\activate.bat

Windows PowerShell

.\myenv\Scripts\Activate.ps1

激活成功后,終端提示符會(huì)顯示環(huán)境名稱,表明當(dāng)前已進(jìn)入虛擬環(huán)境:

(myenv) user@machine:~/project$

此后所有 pip install 命令安裝的包都會(huì)指向該虛擬環(huán)境,而非系統(tǒng) Python。

驗(yàn)證激活是否成功:可以執(zhí)行 pip list 查看依賴是全局還是當(dāng)前環(huán)境,或查看命令行前面是否有 (myenv) 標(biāo)識(shí)。

2.4 安裝與管理包

在激活的虛擬環(huán)境中,像平常一樣使用 pip:

pip install requests pandas numpy

這些包只會(huì)安裝在當(dāng)前虛擬環(huán)境中,可通過(guò) pip list 驗(yàn)證:

pip list

2.5 導(dǎo)出與重建依賴

將當(dāng)前環(huán)境中的所有包及版本導(dǎo)出到文件:

pip freeze > requirements.txt

在新環(huán)境中通過(guò)該文件重建完全相同的依賴:

pip install -r requirements.txt

2.6 退出虛擬環(huán)境

deactivate

提示符中的環(huán)境名會(huì)消失,后續(xù)操作將回到系統(tǒng) Python 環(huán)境。

3. virtualenv 工具詳解

3.1 簡(jiǎn)介

virtualenv 是一個(gè)功能更強(qiáng)大的第三方虛擬環(huán)境管理工具,出現(xiàn)時(shí)間早于 venv。雖然需要單獨(dú)安裝,但它支持更舊的 Python 版本(2.7+),并提供了更多的自定義選項(xiàng)和更快的環(huán)境創(chuàng)建速度。

3.2 安裝 virtualenv

pip install virtualenv

安裝完成后,可以通過(guò)以下命令驗(yàn)證:

virtualenv --version

3.3 創(chuàng)建虛擬環(huán)境

基本創(chuàng)建命令:

virtualenv myenv

這會(huì)創(chuàng)建一個(gè)與 virtualenv 自身相同 Python 版本的虛擬環(huán)境。

指定 Python 版本

virtualenv -p python3.10 myenv

或使用完整路徑指定解釋器:

virtualenv -p /usr/bin/python3.8 myenv

其他有用選項(xiàng)

選項(xiàng)說(shuō)明
--no-pip創(chuàng)建不包含 pip 的環(huán)境(之后可單獨(dú)安裝)
--system-site-packages允許環(huán)境訪問(wèn)系統(tǒng)全局安裝的包
--no-vcs-ignore不在環(huán)境目錄中創(chuàng)建 VCS 忽略文件(如 .gitignore)

3.4 激活與退出

激活方式與 venv 完全相同:

Linux / macOS

source myenv/bin/activate

Windows

.\myenv\Scripts\activate

退出:

deactivate

3.5 安裝與管理包

與 venv 相同,激活環(huán)境后使用 pip 進(jìn)行包管理:

pip install package_name
pip freeze > requirements.txt

3.6 virtualenvwrapper 擴(kuò)展

virtualenvwrapper 是一套基于 virtualenv 的擴(kuò)展工具,提供了更方便的命令行接口來(lái)管理虛擬環(huán)境。

安裝

pip install virtualenvwrapper

配置(在 ~/.bashrc~/.zshrc 中添加):

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

常用命令

命令說(shuō)明
mkvirtualenv myenv創(chuàng)建虛擬環(huán)境
workon myenv激活虛擬環(huán)境
deactivate退出虛擬環(huán)境
rmvirtualenv myenv刪除虛擬環(huán)境
lsvirtualenv列出所有虛擬環(huán)境

4. Conda 環(huán)境管理詳解

4.1 簡(jiǎn)介

Conda 是一個(gè)跨平臺(tái)、跨語(yǔ)言的包管理和環(huán)境管理系統(tǒng)。與 venv 和 virtualenv 的顯著不同在于,Conda 不僅可以管理 Python 包,還能管理 R 包、C/C++ 庫(kù)等任何類型的軟件包,并且會(huì)自動(dòng)處理包之間的復(fù)雜依賴關(guān)系。它通過(guò)安裝預(yù)編譯的二進(jìn)制包來(lái)工作,這使得它在數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)和科學(xué)計(jì)算領(lǐng)域尤為流行。

4.2 安裝 Conda

可以從以下兩種發(fā)行版中選擇安裝:

  • Anaconda:包含 Conda、Python 以及超過(guò) 150 個(gè)常用科學(xué)計(jì)算包,體積較大。
  • Miniconda:僅包含 Conda 和 Python,體積小,用戶可按需安裝其他包。推薦有一定經(jīng)驗(yàn)的用戶使用。

安裝后,建議初始化 shell 并關(guān)閉自動(dòng)激活 base 環(huán)境:

conda init bash          # Linux/macOS
conda config --set auto_activate_base false

重啟終端后生效。

4.3 創(chuàng)建虛擬環(huán)境

基本創(chuàng)建

conda create --name myenv

這會(huì)創(chuàng)建一個(gè)名為 myenv 的空環(huán)境。

指定 Python 版本(最常見(jiàn)用法):

conda create --name myenv python=3.10

還可以指定版本范圍:

conda create --name myenv "python>=3.10"

創(chuàng)建時(shí)同時(shí)安裝包

conda create --name myenv python=3.10 numpy pandas matplotlib

指定包的精確版本

conda create --name myenv python=3.10 numpy=1.24 pandas=2.0

克隆現(xiàn)有環(huán)境

conda create --name newenv --clone oldenv

4.4 激活與退出

激活環(huán)境(適用于所有平臺(tái)):

conda activate myenv

激活后終端提示符會(huì)顯示環(huán)境名稱。

退出環(huán)境

conda deactivate

4.5 安裝與管理包

激活環(huán)境后,可以使用 conda 或 pip 安裝包:

# 使用 conda 安裝
conda install numpy pandas
# 從特定 channel 安裝(如 conda-forge)
conda install -c conda-forge scipy
# 使用 pip 安裝 conda 倉(cāng)庫(kù)中不存在的包
pip install some-package

4.6 環(huán)境列表與查看

# 列出所有環(huán)境
conda env list
# 查看當(dāng)前環(huán)境信息
conda info --envs
# 搜索可用的包版本
conda search pandas

4.7 導(dǎo)出與重建環(huán)境

導(dǎo)出環(huán)境到 YAML 文件

conda env export --from-history > environment.yml

這會(huì)生成一個(gè)包含環(huán)境所有信息的 YAML 文件。

示例 environment.yml 文件

name: myproject
channels:
  - conda-forge
  - defaults
dependencies:
  - python=3.11
  - numpy=1.24
  - pandas=2.0
  - scikit-learn=1.3
  - matplotlib=3.7
  - jupyter
  - pip
  - pip:
    - pygwalker

從 YAML 文件重建環(huán)境

conda env create -f environment.yml

4.8 刪除環(huán)境

conda env remove --name myenv

或使用 --all 刪除環(huán)境及所有關(guān)聯(lián)包:

conda remove -n myenv --all

4.9 管理 Channels

Conda 通過(guò) channels 來(lái)獲取包,常用的 channel 是 conda-forge(社區(qū)維護(hù)的龐大軟件倉(cāng)庫(kù))。配置 channel 優(yōu)先級(jí)可以獲得更穩(wěn)定可靠的依賴解析:

# 添加 conda-forge channel
conda config --add channels conda-forge
# 設(shè)置嚴(yán)格 channel 優(yōu)先級(jí)
conda config --set channel_priority strict

5. 三者對(duì)比分析

5.1 核心特性對(duì)比表

維度venvvirtualenvConda
來(lái)源Python 標(biāo)準(zhǔn)庫(kù)(內(nèi)置)第三方工具(需安裝)第三方工具(需安裝)
適用語(yǔ)言僅 Python僅 PythonPython、R、C/C++ 等多語(yǔ)言
包管理器pippipconda + pip
包類型Python 包(源碼/whl)Python 包(源碼/whl)預(yù)編譯二進(jìn)制包(任何語(yǔ)言)
Python 版本支持Python 3.3+Python 2.7+ / 3.x不限制
依賴解析pip 解析(較弱)pip 解析(較弱)conda 解析(較強(qiáng),自動(dòng)處理復(fù)雜依賴)
創(chuàng)建速度標(biāo)準(zhǔn)較快(優(yōu)化過(guò))較慢(需下載二進(jìn)制包)
跨平臺(tái)
環(huán)境位置項(xiàng)目目錄內(nèi)項(xiàng)目目錄內(nèi)用戶目錄或自定義位置

5.2 功能維度詳細(xì)對(duì)比

包管理范圍

  • venv 和 virtualenv:主要關(guān)注 Python 包的隔離,使用 pip 管理依賴,對(duì)于非 Python 依賴(如系統(tǒng)級(jí)的 C 庫(kù))管理能力較弱。
  • Conda:可以管理任何類型的包,包括 Python 包、R 包、C/C++ 庫(kù)、系統(tǒng)級(jí)工具等,并會(huì)自動(dòng)處理跨語(yǔ)言的包依賴關(guān)系。Conda 還可以直接安裝 Python 和 pip 這些基礎(chǔ)工具,減少了環(huán)境初始配置時(shí)間。

性能與環(huán)境創(chuàng)建

  • virtualenv:通過(guò)符號(hào)鏈接和優(yōu)化策略,創(chuàng)建速度比 venv 更快。
  • venv:作為內(nèi)置模塊,無(wú)額外依賴,啟動(dòng)和使用最為輕量。
  • Conda:創(chuàng)建環(huán)境時(shí)需下載二進(jìn)制包,速度相對(duì)較慢,但環(huán)境一旦建立后管理高效。

Python 版本兼容性

  • venv:僅支持 Python 3.3 及以上版本,不支持 Python 2。
  • virtualenv:對(duì) Python 2 和 Python 3 都有良好支持,適合需要維護(hù)遺留項(xiàng)目的場(chǎng)景。
  • Conda:不依賴系統(tǒng) Python 版本,可以在環(huán)境中安裝任意版本 Python,完全獨(dú)立于系統(tǒng)安裝。

5.3 適用場(chǎng)景分析

場(chǎng)景推薦工具
簡(jiǎn)單的 Python 3 項(xiàng)目venv(內(nèi)置,零配置)
同時(shí)涉及 Python 2 和 Python 3virtualenv
數(shù)據(jù)科學(xué)與機(jī)器學(xué)習(xí)項(xiàng)目Conda(科學(xué)計(jì)算包集成度高)
需要管理非 Python 二進(jìn)制依賴Conda
追求最小化安裝和輕量化venv
多語(yǔ)言混合項(xiàng)目(Python + R 等)Conda
快速原型開(kāi)發(fā)venvvirtualenv
生產(chǎn)環(huán)境部署需精確復(fù)現(xiàn)Conda(YAML 環(huán)境文件)或 venv(requirements.txt)

6. 總結(jié)與建議

6.1 工具選擇指南

  • 入門或簡(jiǎn)單項(xiàng)目:優(yōu)先使用 Python 內(nèi)置的 venv。它零依賴、無(wú)需額外安裝,完全滿足大多數(shù) Python 項(xiàng)目的需求。
  • 需要兼容舊版本 Python:選擇 virtualenv。它是目前對(duì) Python 2.7 支持最好的虛擬環(huán)境工具,同時(shí)提供了更多的自定義選項(xiàng)和擴(kuò)展工具(如 virtualenvwrapper)。
  • 數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)或科學(xué)計(jì)算領(lǐng)域:選擇 Conda。Conda 對(duì) NumPy、SciPy、scikit-learn 等科學(xué)計(jì)算包的二進(jìn)制管理極其高效,可以避免編譯 C 擴(kuò)展帶來(lái)的各種麻煩。此外,Conda 通過(guò) YAML 環(huán)境文件提供了強(qiáng)大的環(huán)境復(fù)現(xiàn)能力,非常適合團(tuán)隊(duì)協(xié)作和生產(chǎn)部署。
  • 需要管理非 Python 依賴:無(wú)條件選擇 Conda。venv 和 virtualenv 的能力邊界止于 Python 生態(tài),而 Conda 可以管理任何類型的依賴。

6.2 最佳實(shí)踐

  • 始終使用虛擬環(huán)境:為每個(gè)項(xiàng)目創(chuàng)建獨(dú)立的虛擬環(huán)境,避免依賴沖突。
  • 使用 requirements.txt 或 environment.yml:將依賴列表納入版本控制(Git),確保團(tuán)隊(duì)環(huán)境一致。
  • 忽略環(huán)境目錄:將 venv/、.venv/env/ 目錄添加到 .gitignore 文件中,避免將虛擬環(huán)境提交到版本庫(kù)。
  • 合理選擇環(huán)境位置:Python 虛擬環(huán)境創(chuàng)建后不可移動(dòng),需提前規(guī)劃好安裝位置。
  • 定期更新依賴:在虛擬環(huán)境中定期使用 pipconda 更新包,以獲取安全修復(fù)和新功能。
  • 在激活狀態(tài)下操作:安裝包或運(yùn)行腳本前,務(wù)必確認(rèn)虛擬環(huán)境已激活,避免將包意外安裝到全局環(huán)境。

6.3 快速參考:三工具核心命令

操作venvvirtualenvConda
創(chuàng)建環(huán)境python -m venv myenvvirtualenv myenvconda create -n myenv python=3.10
激活環(huán)境source myenv/bin/activate(Linux)同 venvconda activate myenv
退出環(huán)境deactivatedeactivateconda deactivate
安裝包pip install pkgpip install pkgconda install pkg
導(dǎo)出依賴pip freeze > requirements.txt同 venvconda env export > environment.yml
刪除環(huán)境刪除目錄即可刪除目錄即可conda env remove -n myenv
列出環(huán)境無(wú)內(nèi)置命令lsvirtualenv(需 wrapper)conda env list

到此這篇關(guān)于Python 虛擬環(huán)境完全指南:venv、virtualenv 與 Conda詳解的文章就介紹到這了,更多相關(guān)Python venv、virtualenv 與 Conda內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python如何將OpenCV攝像頭視頻流通過(guò)瀏覽器播放

    Python如何將OpenCV攝像頭視頻流通過(guò)瀏覽器播放

    這篇文章主要介紹了Python如何將OpenCV攝像頭視頻流通過(guò)瀏覽器播放的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Python入門學(xué)習(xí)之字符串與比較運(yùn)算符

    Python入門學(xué)習(xí)之字符串與比較運(yùn)算符

    這篇文章主要介紹了Python入門學(xué)習(xí)之字符串與比較運(yùn)算符,是Python語(yǔ)法中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • python中pathlib模塊的基本用法與總結(jié)

    python中pathlib模塊的基本用法與總結(jié)

    這篇文章主要給大家介紹了關(guān)于python中pathlib模塊的基本用法與總結(jié)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 基于Python實(shí)現(xiàn)身份證信息識(shí)別功能

    基于Python實(shí)現(xiàn)身份證信息識(shí)別功能

    身份證是用于證明個(gè)人身份和身份信息的官方證件,在現(xiàn)代社會(huì)中,身份證被廣泛應(yīng)用于各種場(chǎng)景,如就業(yè)、教育、醫(yī)療、金融等,它包含了個(gè)人的基本信息,本文給大家介紹了如何基于Python實(shí)現(xiàn)身份證信息識(shí)別功能,感興趣的朋友可以參考下
    2024-01-01
  • 關(guān)于django 1.10 CSRF驗(yàn)證失敗的解決方法

    關(guān)于django 1.10 CSRF驗(yàn)證失敗的解決方法

    今天小編就為大家分享一篇關(guān)于django 1.10 CSRF驗(yàn)證失敗的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • 基于Python實(shí)現(xiàn)簡(jiǎn)易的植物識(shí)別小系統(tǒng)

    基于Python實(shí)現(xiàn)簡(jiǎn)易的植物識(shí)別小系統(tǒng)

    這篇文章主要介紹了利用Python實(shí)現(xiàn)一個(gè)簡(jiǎn)易的植物識(shí)別系統(tǒng),文中的示例代碼簡(jiǎn)潔易懂,對(duì)我們學(xué)習(xí)Python有一定的幫助,需要的小伙伴可以參考一下
    2021-12-12
  • 基于Django框架的rest_framework的身份驗(yàn)證和權(quán)限解析

    基于Django框架的rest_framework的身份驗(yàn)證和權(quán)限解析

    Django 是一個(gè)基于 Python 的 Web 框架,可讓您快速創(chuàng)建高效的 Web 應(yīng)用程序,這篇文章主要介紹了基于Django框架的rest_framework的身份驗(yàn)證和權(quán)限解析,需要的朋友可以參考下
    2023-05-05
  • python使用KNN算法識(shí)別手寫數(shù)字

    python使用KNN算法識(shí)別手寫數(shù)字

    這篇文章主要為大家詳細(xì)介紹了python使用KNN算法識(shí)別手寫數(shù)字,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 對(duì)pandas的dataframe繪圖并保存的實(shí)現(xiàn)方法

    對(duì)pandas的dataframe繪圖并保存的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇對(duì)pandas的dataframe繪圖并保存的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Python性能提升之延遲初始化

    Python性能提升之延遲初始化

    本文給大家分享的是在Python中使用延遲計(jì)算來(lái)提升性能的方法,非常的實(shí)用,有需要的小伙伴可以參考下
    2016-12-12

最新評(píng)論

沿河| 永康市| 叶城县| 铜山县| 鲁山县| 崇州市| 会同县| 比如县| 祥云县| 临颍县| 汝州市| 芜湖县| 扶沟县| 财经| 信宜市| 突泉县| 栖霞市| 通江县| 乌鲁木齐县| 邹平县| 嘉义市| 昌黎县| 呼和浩特市| 平原县| 安庆市| 克东县| 农安县| 山西省| 德化县| 麻阳| 广安市| 曲沃县| 阜宁县| 卢湾区| 司法| 临夏县| 剑河县| 交城县| 镇巴县| 栾川县| 定陶县|