Python一直以来最大的优点就是丰富的第三方库支持,pip
则是Python的包管理工具。在Windows上安装最新版Python软件后,pip
也会一同自动安装。Linux下,系统通常默认预装Python和pip
命令行工具。下面我们介绍一些pip
的常用命令和相关基础概念。本文没有记录的命令选项,也可以参考相关文档或查阅Linux下的man
手册。
注意:Linux下由于长期并存Python2和Python3两个版本的历史原因,因此可能同时预装了对应两个版本的pip
,Python3对应的pip
命令实际为pip3
,这和Windows下有区别,不过我们这里还是以pip
作为命令来介绍。
PyPI(Python Package Index)是Python第三方扩展的软件仓库,类似Java中的Maven中央仓库或是NodeJS中的npm公共仓库,pip
命令默认就是从PyPI下载软件包的。在PyPI的网站页面中,我们也可以直接搜索扩展包以及查看扩展包的详细介绍。
PyPI地址:https://pypi.org/
如果在中国大陆无法访问PyPI,我们也可以使用清华大学提供的PyPI开源镜像站,执行以下命令可以将清华大学源设置为默认的PyPI镜像。
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
执行上面命令后会将镜像源配置写入pip
的配置文件,这个配置文件在Linux下通常位于~/.config/pip/pip.conf
,在Windows下通常位于C:\Users\<用户名>\AppData\Roaming\pip\pip.ini
。
whl
包(即wheel,轮子)是Python中的包管理打包标准,它是一种二进制分发格式,本质上是一个ZIP文件,内部包含了Python模块、预编译的C扩展模块、依赖库、元数据、安装脚本等信息,旨在简化和加速Python包的安装。使用pip
工具时通常我们可以不必操心依赖库采用哪种方式分发,不过一些极特殊情况可能需要我们手动安装whl
包。
pip install <whl包文件名>
除了目前广泛使用的whl
包,一些早期的项目可能用到其它的依赖包分发形式,比如源码方式、egg
包方式(用于早期的easy_install
包管理工具)等,不过现在已经十分罕见了。
下面我们介绍一些常用的pip
命令。
执行以下命令可以从PyPI下载并安装一个包。
pip install <package>
--upgrade
参数:如果已安装则升级指定的软件包。注意:
pip
命令实际上可能需要写作pip3
(对于Python3来说),此外安装时可能需要管理员权限,因此需要加上sudo
或切换到root
。apt
(或yum
、dnf
等)命令来安装,Linux发行版维护的软件源中也维护了这些扩展包是出于系统稳定性和兼容性来考虑,pip
实际上主要用于开发环境和具体的应用程序部署环境,这些场景一般使用venv
来创建虚拟环境。有关这些细节对于很多其它命令也是类似的,后续就不再赘述了。
执行以下命令查看已安装的所有软件包。
pip list
--outdate
参数:列出已过时、需要升级的软件包。执行以下命令卸载一个已安装的包。
pip uninstall <package>
执行以下命令从PyPI查找软件包。
pip search <package>
该命令会查找和指定名字相似的软件包。实际上除了命令行,还是更推荐使用浏览器访问https://pypi.org/来搜索软件包,网站中展示的信息更全,而且界面也更加友好。
执行以下命令查看已安装的软件包的详细信息。
pip show <package>
该命令会详细列出已安装的软件包的工程元信息。
Anaconda是一个包含大量可选计算库和周边工具的Python发行版,conda
则是其包管理工具,实际上conda
还可以用来管理Python版本或是创建虚拟环境(类似venv
),它的定位更类似一个集成开发包。不过conda
仅在科学计算和机器学习领域有应用,它的存在旨在为不太懂软件工程的人员提供一个“傻瓜”化的Python开发环境,因此本身也有很多局限性,在其它领域不推荐使用conda
。
另外要注意的是conda
是开源的,但Anaconda需要商业授权!
除了pip
工具之外,Python实际上还有一个早期的包管理工具easy_install
,不过现在不是很常用了。我上次使用easy_install
是很多年前了,那时还在使用Python2.7版本,当时用pip
安装了一个软件包结果遇到了Bug,神奇的是尝试用easy_install
却能正常安装,不过随着时间的推移大部分扩展库都在向兼容pip
靠拢,现在easy_install
已经不再推荐使用了。