Anaconda / Conda 實踐


一、環境


CentOS 7.6

有預裝 python 2.7

二、Anaconda 與 Conda 區別


1、Anaconda

Anaconda 是Python的一種發行版。包含了:

(1)conda

(2)某個版本的python

(3)預裝好的packages

Anaconda Distribution還有Anaconda Navigator,提供了界面化的操作。

其實還有Miniconda,只有最基本的conda和python。

2、Conda

conda是Anaconda下的包管理環境管理工具。也可以單獨安裝。

三、Conda 跟 pip 區別


1、包的來源不一樣

Conda 來源於 Anaconda repo and cloud (http://anaconda.org/)

pip(pip Installs Packages) 來源於 PyPI (https://pypi.python.org/pypi)

Anaconda存儲庫中提供了超過1,500個包,但與PyPI上提供的150,000多個軟件包相比,它仍然很小。

2、包的種類不一樣

pip 是 python 官方自帶的包管理工具,只能安裝 python 軟件。

Conda包不僅限於Python軟件。它們還可能包含C或C ++庫,R包或任何其他軟件。在這個意義上,它不像pip,更像是apt或yum等跨平台版本。

Conda 是一個與語言無關的跨平台環境管理器。

3、Conda 比 pip 多了環境管理功能

Pip沒有內置的環境支持,除非使用第三方 virtualenv。

四、Anaconda (Conda) 的安裝


1、下載

下載地址:https://www.anaconda.com/distribution/

有 Python 3.7 和 Python 2.7 兩個版本提供下載:

我們下載 Python 3.7版本,即Anaconda3-2018.12-Linux-x86_64.sh 文件。

2、安裝

bash Anaconda3-2018.12-Linux-x86_64.sh

在當前路徑安裝后,會生成anaconda3目錄和一些隱藏文件。

坑:安裝報錯

Anaconda3-2018.12-Linux-x86_64.sh: line 353: bunzip2: command not found

解決方案:安裝 bzip2 包

yum install bzip2

3、添加環境變量

source .bashrc

4、如何判斷安裝成功?

conda --version

python --version(python 3.7版本會覆蓋之前 centos 預裝的2.7版本)

安裝成功后,機器自帶的 pip 和 python、python3 都會被Conda接管。

五、(Conda)環境管理


1、基本操作

# --------------------------

### 創建環境
conda create -n ds
conda create -n ds python=3.7 (推薦安裝好 python,下面會說原因)
conda create -n ds python=3.4 scipy=0.15.0 astroid babel
# 還可以通過yml的環境文件(下面會介紹)
# 克隆環境(下面會介紹)

# --------------------------

### 激活環境 
source activate ds
conda activate ds

# --------------------------

### 退出環境 
source deactivate
conda deactivate

# --------------------------

### 刪除環境
conda remove -n ds --all

# --------------------------

### 列出所有環境(一開始有一個名為base的默認環境)
conda info -e

# --------------------------

2、克隆環境

conda create -n new_ds --clone ds

3、共享環境

用這個功能可以很好的遷移 python 項目的依賴環境,取代傳統的 pip + virtualenv 的方式。

1、先激活環境

2、再導出環境配置文件
conda env export > environment.yml

3、再根據環境配置文件生成新環境
conda env create -f environment.yml

4、再激活新環境

一個典型的環境配置文件environment.yml如下:

name: ds
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults
dependencies:
  - ca-certificates=2019.1.23=0
  - certifi=2019.3.9=py37_0 
  - pip:
    - ansiwrap==0.8.4
    - attrs==19.1.0 
prefix: /mnt/ds/anaconda3/envs/ds

記得修改prefix路徑,因為每台機器的anaconda3安裝路徑可能不一樣。

坑1:共享環境不適用不同的操作系統(比如 linux 遷移到 mac)

解決辦法:還是 docker 大法好啊!!

坑2:共享環境后,pip的包裝不上

原因未知……待解決

解決辦法:還是 docker 大法好啊!!

4、保存環境變量

5、構建相同的conda環境

我不太清楚 構建相同的conda環境 和 共享環境 有什么具體區別

6、實踐要點【重點】

例如有 base(默認) 和 ds 兩個環境。

(1)推薦創建新環境的時候,指定安裝 python

即用conda create -n ds python=3.7取代conda create -n ds,不然會有一個坑,即用 pip 習慣性的去安裝包的時候,因為 ds 環境沒有裝 python,自然就沒有 pip 命令,那么 conda 的機制就會去使用 base 環境的 pip,那么裝好的包雖然能在 ds 里用,但也能在 base 里用,最重要的是,若以后要做環境遷移,導出的 yml 文件,這個包只會存在 base 里,而不會在 ds 里!

(2)Jupyter notebook 選擇 conda 環境

雖然機子上可能有多個 conda 環境,但坑的是 Jupyter notebook 始終都會選擇 默認的 base 環境

解決辦法:

是安裝nb_conda_kernels包:conda install nb_conda_kernels

使用方法:

A、新建notebook時指定環境:

B、修改已存在的notebook的環境:

六、(Conda)渠道管理


七、(Conda)包管理


conda的設計理念:幾乎將所有的工具、第三方包都當做package對待,甚至包括anaconda、python和conda自身

1、基本操作

# --------------------------

### 查找包
conda search numpy

# 按照全稱查找
conda search --full-name python

# --------------------------

### 安裝包
conda install numpy

# 指定版本
conda install scipy=0.15.0

# 指定環境 (其他的命令也可以用這種寫法)
conda install -n python34 numpy 

# --------------------------

### 更新包
conda update -n python34 numpy
# 更新anaconda
conda update anaconda
# 更新conda
conda update conda
# 更新 python
conda update python

# --------------------------

### 刪除包
conda remove -n python34 numpy

# --------------------------

### 查看安裝了的包
conda list 
conda list zlib

# --------------------------

2、包的來源順序

(1)conda / Anaconda.org

(2)pip

當conda和pip一起用於創建環境時會出現問題

解決方案:https://www.anaconda.com/using-pip-in-a-conda-environment/

3、添加鏡像

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

參考資料

https://docs.anaconda.com/anaconda/install/

https://docs.conda.io/projects/conda/en/latest/user-guide/overview.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM