Python虛擬環(huán)境與Conda使用指南分享
在 Python 開發(fā)中,我們常常會(huì)面臨這樣的問(wèn)題:不同項(xiàng)目可能依賴于同一庫(kù)的不同版本,或者某些項(xiàng)目需要特定的 Python 解釋器版本。
如果將所有的包都安裝在全局環(huán)境中,可能會(huì)導(dǎo)致版本沖突,影響項(xiàng)目的正常運(yùn)行。為了解決這些問(wèn)題,Python 引入了虛擬環(huán)境的概念,而 Conda 則是一個(gè)功能強(qiáng)大的包和環(huán)境管理工具,能幫助我們更方便地創(chuàng)建和管理虛擬環(huán)境。
本文將詳細(xì)介紹 Python 虛擬環(huán)境的概念、Conda 的使用以及一些常用命令。
一、Python 虛擬環(huán)境概述
1.1 什么是虛擬環(huán)境
虛擬環(huán)境是 Python 提供的一種將項(xiàng)目的依賴項(xiàng)隔離開來(lái)的機(jī)制。它可以創(chuàng)建一個(gè)獨(dú)立的 Python 環(huán)境,每個(gè)環(huán)境都有自己獨(dú)立的 Python 解釋器和安裝的包,互不干擾。這樣,我們就可以在不同的虛擬環(huán)境中為不同的項(xiàng)目安裝所需的特定版本的庫(kù),避免了全局環(huán)境中版本沖突的問(wèn)題。
1.2 為什么需要虛擬環(huán)境
- 避免版本沖突:不同項(xiàng)目可能依賴于同一庫(kù)的不同版本,使用虛擬環(huán)境可以為每個(gè)項(xiàng)目提供獨(dú)立的庫(kù)版本。
- 方便項(xiàng)目遷移:虛擬環(huán)境可以將項(xiàng)目的依賴項(xiàng)打包,方便在不同的機(jī)器上部署項(xiàng)目。
- 保持全局環(huán)境整潔:只在全局環(huán)境中安裝必要的工具,將項(xiàng)目的依賴項(xiàng)安裝在虛擬環(huán)境中,使全局環(huán)境更加簡(jiǎn)潔。
二、Python 內(nèi)置的虛擬環(huán)境工具 - venv
2.1 創(chuàng)建虛擬環(huán)境
Python 標(biāo)準(zhǔn)庫(kù)中的 venv
模塊可以用來(lái)創(chuàng)建虛擬環(huán)境。
在命令行中,使用以下命令創(chuàng)建一個(gè)名為 myenv
的虛擬環(huán)境:
python -m venv myenv
上述命令會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè)名為 myenv
的文件夾,其中包含了獨(dú)立的 Python 解釋器和相關(guān)的腳本。
2.2 激活虛擬環(huán)境
- Windows 系統(tǒng):
myenv\Scripts\activate
- Linux 和 macOS 系統(tǒng):
source myenv/bin/activate
激活虛擬環(huán)境后,命令行的提示符會(huì)發(fā)生變化,顯示當(dāng)前使用的虛擬環(huán)境名稱。
2.3 安裝和管理包
激活虛擬環(huán)境后,使用 pip
安裝的包將只安裝在該虛擬環(huán)境中,不會(huì)影響全局環(huán)境。
例如,安裝 numpy
:
pip install numpy
2.4 停用虛擬環(huán)境
當(dāng)你完成項(xiàng)目開發(fā)后,可以使用以下命令停用虛擬環(huán)境:
deactivate
三、Conda 簡(jiǎn)介
3.1 什么是 Conda
Conda 是一個(gè)開源的包和環(huán)境管理系統(tǒng),可在 Windows、macOS 和 Linux 上運(yùn)行。它不僅可以管理 Python 包,還可以管理其他語(yǔ)言的包,如 R、Java 等。Conda 可以創(chuàng)建、保存、加載和切換不同的虛擬環(huán)境,并且可以快速安裝、更新和卸載包。
3.2 安裝 Conda
Conda 有兩種版本:Anaconda 和 Miniconda。Anaconda 是一個(gè)包含了大量科學(xué)計(jì)算和數(shù)據(jù)分析庫(kù)的發(fā)行版,安裝包較大;Miniconda 則是一個(gè)輕量級(jí)的發(fā)行版,只包含了 Conda 和 Python 解釋器。你可以根據(jù)自己的需求選擇合適的版本進(jìn)行安裝。
- Anaconda:從 Anaconda 官方網(wǎng)站 下載適合你操作系統(tǒng)的安裝包,然后按照安裝向?qū)нM(jìn)行安裝。
- Miniconda:從 Miniconda 官方網(wǎng)站 下載適合你操作系統(tǒng)的安裝包,然后按照安裝向?qū)нM(jìn)行安裝。
國(guó)內(nèi)鏡像https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=D
四、Conda 的常用命令
4.1 環(huán)境管理
- 創(chuàng)建新環(huán)境:創(chuàng)建一個(gè)名為
mycondaenv
的 Python 3.8 環(huán)境:
conda create -n mycondaenv python=3.8
- 激活環(huán)境:
Windows 系統(tǒng):
conda activate mycondaenv
**Linux 和 macOS 系統(tǒng)**:同樣使用上述命令激活環(huán)境。
- 列出所有環(huán)境:
conda env list
- 停用環(huán)境:
conda deactivate
- 刪除環(huán)境:
conda env remove -n mycondaenv
4.2 包管理
- 安裝包:在激活的環(huán)境中安裝
pandas
:
conda install pandas
- 更新包:更新
pandas
到最新版本:
conda update pandas
- 卸載包:卸載
pandas
:
conda remove pandas
- 搜索包:搜索名為
scikit-learn
的包:
conda search scikit-learn
4.3 查看環(huán)境信息
- 查看當(dāng)前環(huán)境安裝的所有包:
conda list
- 查看 Conda 配置信息:
conda config --show
4.4 設(shè)置鏡像源
由于 Conda 的默認(rèn)鏡像源在國(guó)外,下載速度可能較慢??梢栽O(shè)置國(guó)內(nèi)的鏡像源來(lái)提高下載速度。
以清華大學(xué)鏡像源為例:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes
五、venv 與 Conda 的比較
5.1 功能范圍
venv
是 Python 標(biāo)準(zhǔn)庫(kù)的一部分,主要用于創(chuàng)建和管理 Python 虛擬環(huán)境。- Conda 不僅可以管理 Python 虛擬環(huán)境,還可以管理其他語(yǔ)言的包和環(huán)境,功能更強(qiáng)大。
5.2 包管理
venv
使用pip
來(lái)管理 Python 包,對(duì)于非 Python 包的支持較差。- Conda 有自己的包管理系統(tǒng),能夠處理各種語(yǔ)言的包,并且可以自動(dòng)解決包之間的依賴關(guān)系。
5.3 安裝和使用復(fù)雜度
venv
是 Python 內(nèi)置的工具,無(wú)需額外安裝,使用簡(jiǎn)單。- Conda 需要單獨(dú)安裝,安裝包較大,但提供了更豐富的功能和更便捷的環(huán)境管理。
總結(jié)
Python 虛擬環(huán)境是解決項(xiàng)目依賴沖突的有效手段,而 Conda 作為一個(gè)強(qiáng)大的包和環(huán)境管理工具,為我們提供了更加便捷的虛擬環(huán)境管理和包管理方式。
無(wú)論是使用 Python 內(nèi)置的 venv
還是 Conda,都可以根據(jù)項(xiàng)目的需求和個(gè)人的喜好來(lái)選擇。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python列表排序 list.sort方法和內(nèi)置函數(shù)sorted用法
這篇文章主要介紹了Python列表排序 list.sort方法和內(nèi)置函數(shù)sorted用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03PyQT5 實(shí)現(xiàn)快捷鍵復(fù)制表格數(shù)據(jù)的方法示例
這篇文章主要介紹了PyQT5 實(shí)現(xiàn)快捷鍵復(fù)制表格數(shù)據(jù)的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06Python實(shí)現(xiàn)批量采集商品數(shù)據(jù)的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)批量采集商品的數(shù)據(jù),文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03用Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的抽獎(jiǎng)小程序
最近開始學(xué)習(xí)python相關(guān)知識(shí),看最近有不少隨機(jī)抽獎(jiǎng)小程序,自己也做一個(gè)試試,下面這篇文章主要給大家介紹了關(guān)于如何利用Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的抽獎(jiǎng)小程序的相關(guān)資料,需要的朋友可以參考下2023-05-05Python單元測(cè)試及unittest框架用法實(shí)例解析
這篇文章主要介紹了Python單元測(cè)試及unittest框架用法實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Python操作Mongodb數(shù)據(jù)庫(kù)的方法小結(jié)
這篇文章主要介紹了Python操作Mongodb數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式總結(jié)分析了Python針對(duì)MongoDB數(shù)據(jù)庫(kù)的基本模塊導(dǎo)入、連接、增刪改查及排序等相關(guān)操作技巧,需要的朋友可以參考下2019-09-09