conda 與 pip 混用的問題

先說結論

  1. conda 會覆蓋pip安裝的包,pip 不會覆蓋conda的包。
  2. 儘量避免混用,如果必須要混用,先用conda再用pip。

驗證conda會覆蓋pip的包

  1. 用pip 安裝numpy,記錄下安裝的版本
$ pip install numpy
Installing collected packages: numpy
Successfully installed numpy-1.21.5
  1. 再用conda安裝numpy,記錄下安裝的版本
$ conda install numpy
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /miniconda3/envs/tt

  added / updated specs:
    - numpy


The following NEW packages will be INSTALLED:

  blas               anaconda/pkgs/main/linux-64::blas-1.0-mkl
  intel-openmp       anaconda/pkgs/main/linux-64::intel-openmp-2021.4.0-h06a4308_3561
  mkl                anaconda/pkgs/main/linux-64::mkl-2021.4.0-h06a4308_640
  mkl-service        anaconda/pkgs/main/linux-64::mkl-service-2.4.0-py37h7f8727e_0
  mkl_fft            anaconda/pkgs/main/linux-64::mkl_fft-1.3.1-py37hd3c417c_0
  mkl_random         anaconda/pkgs/main/linux-64::mkl_random-1.2.2-py37h51133e4_0
  numpy              anaconda/pkgs/main/linux-64::numpy-1.21.2-py37h20f2e39_0
  numpy-base         anaconda/pkgs/main/linux-64::numpy-base-1.21.2-py37h79a1101_0
  six                anaconda/pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_1


Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
  1. 查看numpy版本
$ conda list |grep numpy
numpy                     1.21.5                   pypi_0    pypi
numpy-base                1.21.2           py37h79a1101_0    defaults

$ python -c "import numpy as np;print(np.__version__)"
1.21.2

雖然conda list 顯示numpy==1.21.5 但是實際用的是1.21.2,這個是被conda 覆蓋的,所以conda list並不可靠!!

驗證pip不會覆蓋conda的包

  1. 用conda 安裝numpy

$ conda install numpy -y
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /miniconda3/envs/tt

  added / updated specs:
    - numpy


The following NEW packages will be INSTALLED:

  blas               anaconda/pkgs/main/linux-64::blas-1.0-mkl
  intel-openmp       anaconda/pkgs/main/linux-64::intel-openmp-2021.4.0-h06a4308_3561
  mkl                anaconda/pkgs/main/linux-64::mkl-2021.4.0-h06a4308_640
  mkl-service        anaconda/pkgs/main/linux-64::mkl-service-2.4.0-py37h7f8727e_0
  mkl_fft            anaconda/pkgs/main/linux-64::mkl_fft-1.3.1-py37hd3c417c_0
  mkl_random         anaconda/pkgs/main/linux-64::mkl_random-1.2.2-py37h51133e4_0
  numpy              anaconda/pkgs/main/linux-64::numpy-1.21.2-py37h20f2e39_0
  numpy-base         anaconda/pkgs/main/linux-64::numpy-base-1.21.2-py37h79a1101_0
  six                anaconda/pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_1


Preparing transaction: done
Verifying transaction: done
Executing transaction: done
  1. 用pip 安裝numpy
$ pip install numpy
Requirement already satisfied: numpy in /miniconda3/envs/tt/lib/python3.7/site-packages (1.21.2)

檢測到已經安裝不會重複安裝

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