正常而言,大家都是用 pip 来安装 python 的包。但有时候无意中(通常是为安装某个特定的软件,根据软件的安装提示),会使用 apt 安装 python 包。而且其实很多包都可以通过 apt 来安装的,名字就是包名再加python3-
的前缀。安装后的库以及依赖项位于/usr/lib/python3/dist-packages
目录下。比如 apt 安装 requests 包:
sudo apt install python3-requests
但其实这样安装的库有很大的问题。apt
的库升级很慢,相对而言 python 库更新很快。在大部分情况下这不会有问题。但如果用 pip 更新一个依赖更新版本的 requests 的 python 库时,便会试图更新 requests 库,这时候会提示:
ERROR: Cannot uninstall 'requests'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
这个错误和字面意思不一样。实际情况是,因为 requests 不是通过 pip 安装的,所以 pip 无法去更新(因为更新需要先卸载)。必须先通过 apt 去卸载:
sudo apt remove python3-requests
对于一个稳定的平台和系统,如果 apt 安装的 python 包够用,那么 apt 安装是可以的。如果是为了开发,想利用最新的包,那就推荐所有的包都用 pip 来安装和管理:
sudo pip install requests
正常 pip 安装的包位于/usr/local/lib/python3.8/dist-packages
目录,所以它很容易就可以与 apt 安装的包区别开来。在 Python 查找时,/usr/local/lib/python3.8/dist-packages
的优先级比/usr/lib/python3/dist-packages
靠前。
Q. E. D.