Python多環境管理神器(Anaconda)

為了解決python多版本共存,解決不同版本之間的依賴衝突,虛擬環境隔離等問題,我們前面介紹了venv、virtualenv、virtualenvwrapper、pyenv、pipenv等眾多工具。下面我們再介紹一個非常強大的多環境管理神器——Anaconda。

Anaconda (強大)

1、什麼是Anaconda

Anaconda是專註於數據分析的Python發行版本,包含了conda、Python等190多個科學包及其依賴項。Anaconda通過管理工具包、開發環境、Python版本,大大簡化了你的工作流程。不僅可以方便地安裝、更新、卸載工具包,而且安裝時能自動安裝相應的依賴包,同時還能使用不同的虛擬環境隔離不同要求的項目。安裝Acaconda默認的Python是2.7;安裝Acaconda3默認的Python是3.6

2、什麼是Conda

Conda是一個開源的包、虛擬環境管理器,可以用於在同一個機器上安裝不同版本的軟體包及其依賴,並能夠在不同的環境之間切換,它的包管理類似PIP。

packages 管理: 可以使用 conda 來安裝、更新 、卸載工具包 ,並且它更關注於數據科學相關的工具包。在安裝 anaconda 時就預先集成了像 Numpy、Scipy、 pandas、Scikit-learn 這些在數據分析中常用的包。另外值得一提的是,conda 並不僅僅管理Python的工具包,它也能安裝非python的包。比如在新版的 Anaconda 中就可以安裝R語言的集成開發環境 Rstudio。

虛擬環境管理: 在conda中可以建立多個虛擬環境,用於隔離不同項目所需的不同版本的工具包,以防止版本上的衝突。對糾結於 Python 版本的同學們,我們也可以建立 Python2 和 Python3 兩個環境,來分別運行不同版本的 Python 程式碼。

3、安裝Anaconda:

去官網下載指定的版本的Anaconda://repo.anaconda.com/archive/

我們下載的是Anaconda3-5.2.0-Linux-x86_64.sh

wget //repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh

安裝前,先安裝bunzip2依賴包,否則後面安裝會報錯:bunzip2: command not found

yum install -y bzip2

運行該腳本,進行安裝

bash Anaconda3-5.2.0-Linux-x86_64.sh

在安裝的過程中,會問你安裝路徑,直接回車默認就可以了,默認安裝到了/root/anaconda3目錄下。

有個地方問你是否將anaconda安裝路徑加入到環境變數(.bashrc)中,輸入yes,默認的是no,

最後一步有一個詢問你是否安裝vscode,emm如果你沒有需要就輸入no,畢竟在伺服器裡面都是用vim編輯器的,沒必要多裝一個。

安裝完成如下圖:

clipboard

配置anaconda環境變數:

默認是安裝在/root/anaconda3/下的,如果不是,請修改路徑

vim /etc/profile

## Anaconda
export PATH=$PATH:/root/anaconda3/bin

載入使立即生效

source /etc/profile

注意:如果之前伺服器上已經編譯安裝過python了,將它重命名,否則系統會自動找到之前編譯的python3環境,而不會使用Anaconda里的python環境。

# 注釋掉之前編譯安裝使用的python3.9環境
mv /usr/local/python3.9/ /usr/local/python3.9_bak

測試Anaconda安裝是否正確:

# 查看python3的路徑是否正確
which python3
# 啟動python3看環境是否正確
python3

如下圖:

clipboard

至此,Anaconda安裝完成。

Conda自身管理

更新conda

# 更新anaconda
conda update conda

更新anaconda元數據包

# 更新anaconda元數據包
conda update anaconda

.condarc

刪除 .condarc 文件這個文件默認沒有,只有你執行過 conda config 命令以後才會自動建立。該文件是conda的配置文件

是YAML格式。比如你可以設置安裝包的渠道,是否自動更新conda,是否允許其他渠道等設置。

4、Python環境管理

# 創建一個新環境,並制定python解釋器版本,沒有會自動下載
# python27 是環境名稱
# python=2.7 是要安裝的包和版本,默認會為我們尋找2.7.x中的最新版本
# anaconda 是創建環境時同時要安裝的包,這個可以不寫
conda create -n python27 python=2.7 anaconda
conda create -n python36 python=3.6
conda create -n python37 python=3.7

# 更新Python,進入某個環境運行下面的命令,將更新當前環境的Python到最新分支版本。比如當前是3.5,更新後將會到最新的3.X
conda update python

5、虛擬環境管理

查看當前託管的所有虛擬環境列表

[root@linux121 ~]# conda env list
# conda environments:
#
base                  *  /root/anaconda3

創建虛擬環境

 # 創建一個名為myvenv 的環境,指定Python版本是3.10
 # (不用管是3.10.x,conda會為我們自動尋找3.10.x中的最新版本)
 conda create --name myvenv python=3.10

虛擬環境不會在當前環境下創建虛擬環境目錄,所有的虛擬環境目錄默認放在:

/root/anaconda3/envs/

激活虛擬環境

activate myvenv        # for Windows
source activate myvenv # for Linux & Mac
conda activate myvenv  # 新版使用這個

退出虛擬環境

 conda deactivate

如下圖:

clipboard

導出依賴包:

導出環境,它會把當前環境中安裝的包以及版本號都導出去,這樣你就可以拿到另外的機器上來重新構建一個相同的環境

導出的內容包括環境名稱,安裝渠道,該環境安裝的包以及版本號。

# 首先進入名稱叫做python36環境
conda activate myvenv 
# 導出當前環境到指定文件
conda env export > environment.yml  
# 通過環境文件建立環境,不需要指定環境名稱,因為文件中包含名稱欄位
conda env create -f environment.yml 

刪除虛擬環境

# 方式一:
conda env remove --name myvenv
# 方式二:
conda remove -n myvenv --all

克隆虛擬環境:

conda create -n myvenv2 --clone myvenv

克隆如下圖:

clipboard

6、包管理

安裝包

conda install --name myvenv scipy # 安裝包到指定環境中
conda install scipy # 安裝包到當前環境中
conda install scipy=0.15.0  # 安裝指定版本的包,到當前環境
conda install scipy curl # 安裝多個包
conda install -c anaconda django # -c是指定渠道名稱,也就是用哪個渠道安裝django。

卸載包:

# 卸載包
conda remove 包名  # 刪除當前環境中的指定包
conda remove -n myvenv numpy # 刪除指定環境中的指定包
conda remove -n myvenv --all # 刪除指定環境中的所有包,等同於刪除環境

更新包:

conda update 包名  # 更新當前環境指定的包
conda update -n myvenv numpy # 更新指定環境中的指定包

查看當前packages:

# 查看當前已經安裝的packages
conda list
conda list -n myvenv # 查看指定環境中安裝的所有包

如下圖:

clipboard

查找可安裝的包:

精確查找

conda search --full-name <package_full_name>
# 例如:
conda search --full-name python

模糊查找:

conda search jieba
# 支援正則
conda search *py*

7、鏡像源管理

conda默認使用的是官方鏡像源,是在國外,安裝下載會很慢,所以強烈建議切換為中國鏡像源。

查看當前鏡像源配置

# 查看當前的鏡像源
conda config --show channels
# 查看詳細資訊
conda config --show

如下圖:default的地址默認就是官方地址,//repo.anaconda.com/pkgs/main

clipboard

添加清華大學鏡像源

# 添加Anaconda的TUNA鏡像
conda config --add channels //mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels //mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

# 設置搜索時顯示通道地址,這個可以不加,只是為了看一下是否從鏡像站下載
conda config --set show_channel_urls yes

再次查看鏡像地址:

conda config --show channels

如下圖;

clipboard

添加第三方鏡像源:

##  Conda Forge
conda config --add channels //mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
## msys2
conda config --add channels //mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
## bioconda
conda config --add channels //mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
## menpo
conda config --add channels //mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
## pytorch
conda config --add channels //mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

其他鏡像源:

清華大學其他鏡像源地址://mirrors.tuna.tsinghua.edu.cn/anaconda/

clipboard

刪除鏡像源

conda config --remove channels <URL>  ## 刪除原來的舊鏡像

# 如下
conda config --remove channels default
conda config --remove channels //mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --remove channels //mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

注意:如果切換鏡像源後,安裝過程出現報錯:

CondaHTTPError: HTTP 000 CONNECTION FAILED for url <//mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/noarch/repodata.json>

解決辦法:參考://www.freesion.com/article/67891423758/

1、首先把鏡像源地址,從https替換為http

2、刪除/root/.condarc中的- default

即可解決

.condarc文件說明:

文件這個文件默認沒有,只有你執行過 conda config 命令以後才會自動建立。該文件是conda的配置文件,是YAML格式。比如你可以設置安裝包的渠道,是否自動更新conda,是否允許其他渠道等設置。下面是我的配置文件說明。這些不是必須的。但是在中國建議設置channels,這個在上面已經說過。所以通常你不需要關注這個文件。

參考://mirror.tuna.tsinghua.edu.cn/help/anaconda/

文件樣例如下:

vim /root/.condarc

channels:
  - defaults
show_channel_urls: true
default_channels:
  - //mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - //mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - //mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: //mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: //mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: //mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: //mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: //mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: //mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: //mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

清除索引快取:

運行 conda clean -i 清除索引快取,保證用的是鏡像站提供的索引。

conda clean -i

8、當conda中沒有這個包時:

會報錯,如下:

PackagesNotFoundError: The following packages are not available from current channels:

clipboard

方法一:使用pip安裝

# 安裝不在conda或者acaconda的包,當你安裝的包不在conda管理範圍的時候可以使用pip來安裝
conda install pip  # 首先在當前環境中安裝pip
pip install jieba   # 其次在通過PIP命令在當前環境中安裝包

方法二:搜索包含該安裝包的渠道

anaconda search  jieba

搜索如下圖:

clipboard

選擇其中一個版本,我們選擇了conda-forge/jieba模組

展示該版本的資訊

anaconda show conda‐forge/jieba

如下圖,顯示了安裝渠道路徑

clipboard

找到對應的渠道資訊,如上面最後一行,直接進行安裝即可

conda install --channel //conda.anaconda.org/conda-forge jieba

如果最開始你就知道要這個渠道模組,也可以這樣直接安裝:

conda install -c conda-forge jieba

方法三:去conda官網搜索包

說明:對於那些無法通過conda安裝或者從Anaconda.org獲得的包,我們通常可以用pip來安裝包。

pip只是一個包管理器,所以它不能為你管理環境。pip甚至不能升級python,因為它不像conda一樣把python當做包來處理。但是它可以安裝一些conda安裝不了的包,pip和conda都集成在Anaconda或miniconda裡邊。

另外你還可以去 官網 搜索://anaconda.org/

clipboard

如下,找到很多渠道:

clipboard

找到安裝路徑:

clipboard

再使用該安裝路徑安裝即可:

conda install -c conda-forge jieba

方法四:去pypi下載安裝包,手動安裝

如果下載太慢,可以去官網下載,下載jieba的安裝包,然後解壓到pkgs目錄上,參考鏈接://www.pianshen.com/article/18251601207/

官網鏈接://pypi.org/project/jieba/#files

解壓之後,執行包里的setup.py文件也可以安裝成功。

wget //files.pythonhosted.org/packages/c6/cb/18eeb235f833b726522d7ebed54f2278ce28ba9438e3135ab0278d9792a2/jieba-0.42.1.tar.gz
tar xf jieba-0.42.1.tar.gz 
mv jieba-0.42.1 /root/anaconda3/pkgs/
cd /root/anaconda3/pkgs/jieba-0.42.1/
# 如果要安裝到指定虛擬環境中,需要先激活環境,再執行install
source activate job_recommended
python setup.py install

如果安裝的時候,沒有進入虛擬環境,可以在安裝後,重新激活虛擬環境,再安裝一次,安裝到虛擬環境中,如下,

clipboard

9、Miniconda

Miniconda 是一個 Anaconda 的輕量級替代,默認只包含了 python 和 conda,但是可以通過 pip 和 conda 來安裝所需要的包。

Miniconda相比Anaconda,去掉了科學計算的相關包,更加輕量級,沒有那麼臃腫。可以認為是Anaconda的最小化版本,用法與Anaconda完全一致。

Miniconda 安裝包可以到 //mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ 下載。

10、圖形介面管理

Anaconda還提供了UI介面,進行圖形化管理。

比如在windows中,安裝完成後,點擊Anaconda Navigator

如圖所示:首頁顯示的是一些自帶的工具

clipboard

點擊Environments,可以在這裡進行環境管理的操作。

包括:創建虛擬環境,導入虛擬環境,進入虛擬環境,以及查看安裝包

clipboard

創建虛擬環境myvenv

clipboard

搜索包安裝:

clipboard

點擊channels可以添加渠道

clipboard

11、Jupyter Notebook

Anaconda自帶了Jupyter Notebook,我們可以直接啟動Jupyter Notebook。

window啟動:

clipboard

Linux啟動:

如果沒有安裝Anaconda,就需要手動安裝一下jupyter notebook

pip install jupyter notebook

因為Anaconda自帶了jupyter,所以直接啟動:

jupyter notebook --allow-root

注意,默認是不允許外部訪問的,需要配置一下遠程訪問支援:

生成jupyter配置文件

#root用戶:
jupyter notebook --generate-config --allow-root
#非root用戶
jupyter notebook --generate-config

如下圖:

clipboard

修改配置

vim /root/.jupyter/jupyter_notebook_config.py

增加以下兩行:

c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False

配置密碼:

jupyter notebook password

這裡密碼輸入123456

clipboard

啟動jupyter notebook:

jupyter notebook --allow-root

如下圖所示:

clipboard

也可以後台啟動:

nohup jupyter notebook --allow-root > jupyter.log 2>&1 &

打開網頁訪問:默認8888埠

輸入地址:(配置好hosts映射)//linux121:8888/

輸入密碼123456

clipboard

登錄如下圖:

裡面的文件,就是我們之前啟動jupyter notebook的當前目錄下的內容

clipboard

新建一個文件:

clipboard

輸入python程式碼,點擊run運行如下:

import time, sys
for i in range(8):
    print(i)
    time.sleep(0.5)

如下圖所示:

clipboard

更多jupyter notebook,參考://jupyter-notebook.readthedocs.io/en/latest/

12、優缺點分析:

1、功能強大,而且還有UI介面。

2、支援python2、python3以及windows、linux、mac等多平台。

3、conda安裝可以自動解決依賴關係,之前的pip可能不會安裝所有依賴包,導致出現依賴問題。

4、Anaconda,顯得有點厚重,臃腫,但是可以用輕量級的miniconda替換。

5、conda安裝軟體需要解析依賴關係,而且默認連的國外的鏡像源,所以conda安裝可能很慢。

6、包含大量的科學計算的包,適合做數據分析或者喜歡UI介面的人。

參考引用:

//www.cnblogs.com/rexcheny/p/9484309.html

//zhuanlan.zhihu.com/p/106588887

Tags: