python 依赖管理简介

python 虽然好用,但是项目一多,依赖的管理就是个大问题了,新项目已经全在用 python3,而老项目都是 pthon2,更蛋疼的是,不同项目之间还可能依赖了同一个库的不同版本!我们试着解决这个问题:

pip: 解决项目的全局依赖问题

最开始的时候,我们都是手动安装库,而库可能还有依赖的库,这样最终会形成一张树的依赖结构。解决这个问题,我们可以使用 pip。

它主要解决包的问题,包括安装、更新、删除等。
简介: https://pip.pypa.io/en/stable/quickstart/
安装: https://pip.pypa.io/en/stable/installing/

virtualenv: 解决不同项目间使用同一依赖不同版本的问题

pip 可以帮助我们方便地安装项目需要的依赖,不过随着项目的变多,我们可能会在不同的项目里使用同一个库的不同版本,甚至python 的不同版本,这时,需要一个新的工具来解决这个问题: virtualenv。

它可以帮助我们创建一个虚拟、独立的依赖环境,以保证每个项目可以使用指定的依赖,包括 python、第三方库等。

conda: 解决非python依赖的问题,以及简单统一的操作方式

pip 和 virtualenv的组合,可以解决绝大部分 python的依赖管理问题,但是,随着项目的发展,我们可能需要非 python 的依赖,来解决现有问题。

conda 作为一个打包工具和安装程序,可以帮助我们解决主流的开发环境和依赖的问题,除 python 外,它还支持:R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN等语言。一定程度上,可以把它看着 pip 和 virtualenv 的结合(实际上,pip 和 conda 是互补的关系,因为 pip 可以安装一部分 conda 不能安装的依赖)。

官网 (很卡,不推荐,建议使用下面的镜像)
国内镜像

总结

virtualenv和conda都是通过修改 shell 里的环境变量来达到修改环境的目的,基本原理类似。
不同的项目可以用不同的工具,不要求全,适合才是最好的。
Pycharm 对以上工具都有很好的支持,善用工具可以极大提高效率。

以下是参考资料:
Anaconda介绍、安装及使用教程
Anacodna之conda与 virtualenv对比使用教程,创建虚拟环境