【開發環境搭建】2.Anaconda虛擬環境的創建、複用和更新


本文內容對linux系統或windows系統安裝的anaconda都適用

1、conda虛擬環境說明

conda虛擬環境包含有許多用戶指定安裝的特定的conda 安裝包,可以隨意指定不同項目使用各自的虛擬環境。conda 有一個默認的虛擬環境叫base,該環境包含安裝好的python、核心系統軟件以及conda所需的依賴包。最好不要在默認環境安裝用戶需要的特定版本的其它安裝包。有特定的需求,要構建新的專用的虛擬環境。

1.1創建環境

#創建一個名字叫tf1的虛擬環境,指定python版本是3.6
conda create --name tf1 python=3.6 
#或
conda create -n tf1 python=3.6

安裝是指定版本有助於復現環境,如果不知道用那個版本好,可以先對版本進行搜索。

conda search your_package_name
#比如安裝tensrorflow gpu版本
conda search tensorflow-gpu
#可以使用--help來獲取更多搜索選項

在這裏插入圖片描述
也可以在創建環境時指定多個安裝包

conda create -n tf1 python=3.6 jupyterlab=1.0 matplotlib=3.1 numpy=1.16
#安裝這個包的同時,會把所需要的依賴包也安裝上

1.2 環境激活

激活環境會做兩件事

  1. 把虛擬環境填加到PATH環境變量中
  2. 運行虛擬環境包含的所有的激活腳本
#激活環境
source  activate tf1
#或者windows
activate tf1

在conda4.6以後無論是linux還是windows,都可以使用一條同樣的命令:

conda activate tf1

激活後,可以看來shell中提示符前有變化:
在這裏插入圖片描述

1.3 deactivate 虛擬環境

conda deactivate 

直接退出激活環境

1.4 指定虛擬環境的安裝位置

這樣可以在默認安裝環境大小不夠的時候,指定安裝到大的環境:

conda create --prefix ./env python=3.6 #或者-p
#激活
conda activate ./env

在這裏插入圖片描述
把虛擬環境安裝到默認環境~/miniconda3/envs/之外,將不能使用–name(-n)來查找,要用–prefix指定虛擬環境的全部絕對路徑來找到環境;
另一個不足是當激活後,顯示的名字會是整個絕對路徑,特別長會有問題,很不方便

#例如
(/absulute/path/to/env/)tianliang@ubuntu:~$
#可以過改.condarc中的env_prompt來簡化,如裏.condarc存在就直接有反映,沒有就先創建再改變
conda config --set env_prompt '({name})'

在這裏插入圖片描述
在這裏插入圖片描述

1.5列出當前的所有環境

conda env list
conda info --env 
conda info -e
#這三個命令的作用是一樣的

1.6列出指定環境所有安裝包

#激活前
conda list --name tf1 #或-n
#如果是激活前用--prefix創建的環境
conda list --prefix ./env #或-p
#激活後
conda list

1.7刪除整個環境

conda remove --name tf1 --all #或-n
#如果用--prefix創建
conda remove --prefix ./env --all #或-p

2 共享虛擬環境

2.1 環境共享

當合作共同一個項目時,每個人的環境可能不同;自己遠程使用服務器時,可能和本地的環境不同;所以共享環境很有必要。要做到真正在linux,windows,Mac os共享同一個環境。Conda使用yaml文件來描述環境。
如下將列一個環境的yaml,參照要自己寫:

name: tl

dependencies:
  - numpy
  - pandas

這個文件創建一個名字叫tl的虛擬環境,所有包是當前兼容性最好的版本。安裝路徑在默認位置 ~/miniconda3/envs
如果想要指定一個位置,把名字改成null:

name: null

dependencies:
  - numpy
  - pandas

如果要加版本號:

name: tl

dependencies:
  - numpy=1.16
  - pandas=0.25

創建方法:

conda env create --prefix ./env --file environment.yml

儘量避免使用conda env export命令:
例如我們導出./env的環境:

conda env export --prefix ./env --no-builds --file env.yml

將./env環境的說明導出到文件env.yml,可以看來不只列出我們需要的兩個包,還列出了所有的依賴。

在這裏插入圖片描述
在實際中,export命令導出不說明並不總能在linux,windows,mac os三個平臺同時滿足,即使用–no-builds去掉了編譯號。
以下是一個常見的環境描述文件,我們可以把常用的工作環境寫成一個文件,把自己需要的安裝包都寫進去,這樣以後安裝將非常方便。

name: tl

channels:
  - defaults
  - conda-forge
  - districtdatalabs

dependencies:
  - python=3.6
  - jupyterlab=1.0
  - pandas=0.25
  - py-xgboost=0.82
  - scikit-learn=0.21
  - scikit-optimize=0.5
  - featuretools=0.9
  - yellowbrick=0.9
  - kaggle=1.5
  - pip=19.1

2.2 環境更新

我們不太可能提前知道開發項目所需要的全部軟件的版本號:

  1. 某一個依賴包新版本發佈,所以依賴所用版本號升級
  2. 需要自己指定安裝某個包來做數據分析
  3. 發現相同功能但是更好用的另一個包,就要刪除舊的來安裝新的
    有這些情況,需要更新版本,可以把更新的內容改到environment.yml文件中,然後:
conda env update --prefix ./env --file environment.yml --prune #--prune選項使Conda刪除環境中不再需要的所有依賴項

2.3 環境克隆

想要做一個一模一樣的環境,只是改變名字,或在另一個機器上做同樣的環境來複現工作

conda create -n new_name --clone path/or_name

克隆的話指定路徑和名字都可以,需要花一段時間,耐心

我個人常用科學計算(深度學習)環境:

做兩個環境,一個用來安裝tensorflow2.0與pytorch1.3,都是最新版本的tensorflow和pytorch;另一個環境安裝早先一直使用的tf1.x版本,我用較老的1.5.
先寫個environments_tf2.yml:

channels:
  - defaults
dependencies:
  - python=3.7
  - tensorflow-gpu=2.0.0
  - pandas
  - pillow
  - jupyterlab
  - scikit-learn
  - scikit-image
  - seaborn
  - pydot
  - pip
  - pip:
    - opencv-contrib-python

安裝命令:

conda env create -n tf2 --file environments_tf2.yml

1.5版本的tensorflow:

channels:
 - https://repo.anaconda.com/pkgs/free
 - defaults
dependencies:
 - python=3.6
 - tensorflow-gpu=1.5.0
 - pandas
 - pillow
 - jupyterlab
 - scikit-learn
 - scikit-image
 - seaborn
 - pydot
 - pip
 - pip:
   - opencv-contrib-python

安裝命令:

conda env create -n tf1 --file environments_tf1.yml

再建一個pytorch環境

channels:
- pytorch
 - https://repo.anaconda.com/pkgs/free
 - defaults
dependencies:
 - python=3.6
 - tensorflow-gpu=1.5.0
 - pandas
 - pillow
 - jupyterlab
 - scikit-learn
 - scikit-image
 - seaborn
 - pytorch
 - torchvision
 - pydot
 - pip
 - pip:
   - opencv-contrib-python

另外,鑑於pytorch下載很慢,所以可以先不安裝,等環境安好,進入環境再慢慢安。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章