Python包是什么,为什么要通过pip来下载?
软件开发工作,一般情况下都不会是完全全是自己实现,还要依赖别人的代码。
那就自然引入一个问题,如何引入别的代码?
别人开发包,我们直接复用别人的代码不就好了吗。但是这有一些问题,别人提供的代码中的定义万一和我的代码有很多冲突怎么办,我能拿过来就用吗?或许修修补补还是可以实现的。但如果我们并不了解别人代码,那就非常困难了,成本太高,或许还会改出 bug。于是,包就出现了,它通过一些约定俗成的规则防止一些问题发生,比如名称冲突,简化我们的工作。我们要使用别人的代码,只要 import 即可。
语言一般只提供最核心的能力,其他功能都会通过包扩展,包一般可分两类,标准库和第三方库,标准库即官方提供给的,比如 Python 中的 math、random、functools 等包,第三方包,第三方个人或组织开发的包,比如流行的数据分析处理库 numpy 和 pandas,web 领域的三个框架 django、flask 和 tornado。
为什么要通过 pip 下载?
无论是标准库还是第三方库,其实都是某些人开发出来,提供给其他需要的人使用。标准库在安装好 Python 就有了,标准库的包获取比较简单。
网络上别人分享的第三方包怎么处理?
它是需要我们自己下载的。通常会有一个中央仓库用于别人发布自己的包,如 Python 的 pypi 源,如果下载速度慢,通常还可以设置国内镜像加速。
怎么从这些源下载包?纯粹手动 ftp、http 下载吗?
但下载好之后,还会要处理诸如怎么找到包,如何把包移动到合适的路径等,万一这个包还有依赖其他包怎么办?再去手动下载其他包?万一是个大项目,通常会依赖很多的包,并且还会牵涉到版本管理,问题太多了。
模块/包管理机制产生了!pip 就是 python 的包管理工具。
现代的这些高级语言,基本都有一套模块/包管理机制,Python 的 pip,Java 的 maven,Go 的 go module,PHP 的 composer,nodeJS 的 npm 等。前面提到的那些问题,工具帮你解决,真的是一站式解决方案。如果还要自己处理这些问题,那只能掉头发啦!