conda install和pip install

type
status
date
slug
summary
tags
category
icon
password
苦于复刻论文各种依赖安装的问题,在此说明conda install与pip install的区别。
  • pip 是 python 官方推荐的包下载工具,但是只能安装python包
  • conda 是一个跨平台(支持linux, mac, win)的通用包和环境管理器,它除了支持python外,还能安装各种其他语言的包,例如 C/C++, R语言等
  • pip 从PyPI(Python Package Index)上拉取数据。上面的数据更新更及时,涵盖的内容也更加全面
  • conda 从 Anaconda.org 上拉取数据。虽然Anaconda上有一些主流Python包,但在数量级上明显少于PyPI,缺少一些小众的包
  • pip 里的软件包为wheel版源代码发行版。wheel属于已编译发新版的一种,下载好后可以直接使用;而源代码发行版必须要经过编译生成可执行程序后才能使用,编译的过程是在用户的机子上进行的
  • conda 里的软件包都是二进制文件,下载后即可使用,不需要经过编译,从这里可以看出,使用conda可以规避掉在使用pip下载好包之后可能会出现的编译问题
  • pip安装包时,尽管也对当前包的依赖做检查,但是并不保证当前环境的所有包的所有依赖关系都同时满足。当某个环境所安装的包越来越多,产生冲突的可能性就越来越大。
  • conda会检查当前环境下所有包之间的依赖关系,保证当前环境里的所有包的所有依赖都会被满足,因此conda对与依赖的检查更为严格
  • conda install xxx:这种方式安装的库都会放在anaconda3/pkgs目录下,这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境而不用重复下载。相当于conda安装的库对于所有env都是通用的
  • pip install xxx:分两种情况,一:当前conda环境的python是conda安装的,那么xxx会被安装到anaconda3/envs/current_env/lib/python3.x/site-packages文件夹中。二:如果当前conda环境用的是系统的python,那么xxx会通常会被安装到~/.local/lib/python3.x/site-packages文件夹中。
    • 使用python -m site可以看到这些包被导入时系统查询路径的优先级,这里的USER_BASE 和USER_SITE其实就是用户自定义的启用Python脚本和依赖安装包的基础路径,使用conda install安装anaconda3/pkgs到目录下需要权限,这里的user用户不具备写入anaconda3/pkgs的权限,看起来也无法读取?
      notion image
      以我的ofa子环境为例,通过pip安装的包通常在/usr/local/anaconda3/envs/ofa/lib/python3.7/site-packages/目录下,也即当pip安装包失败的时候,可以直接将编译好的包放到此目录下(谨慎使用),参考安装pycocotools失败的情况【 解决anaconda中安装pycocotools报错:ERROR:Could not build wheels for pycocotools, which is required to i】-CSDN博客
 
Prev
intro
Next
命令行执行提示自定义module不存在,但是目录中存在
Loading...
Catalog