选择的起因
作为一个有着一点点强迫症的人,总是对自己用的系统有点洁癖,能用自带的就不想安装其他的,即使是自带的可能是不好用的。最初的时候在网上看到别人的 python 教程都是使用的 pip 作为包管理器来安装和管理包,所以,我也就一直在使用 pip 但是某次在 V2EX 论坛看到有人说最好的方法是使用 apt-get install python3-xxx 的方式安装包。
作为是使用系统原生的包管理工具的方式,况且似乎还比 pip 更优秀,于是我又重新装了几遍我的树莓派和 VPS,但是即使这样也难免有所思考:既然 apt-get 更优秀并且是系统原生支持的,那么 pip 存在的意义在什么地方,为什么它还如此生生不息,以至于我们在各种教程中广泛的发现它的踪迹?
作为一个好学的人,本能去搜索了相关的资料,相比较一下两者的优缺点和不同。
不同之处
-
最为重要的不同之处在于 apt-get 方式安装的包是全局范围的,也就是说所有的用户都是使用的。而通过 pip 安装的包则是仅执行安装的用户可用的(不使用 sudo ),这样每个用户的 python 环境都是独立的,不会造成相互污染的情况。
-
使用 sudo pip install 可能会引入恶意代码。
-
一般通过 apt-get 安装的包版本较 pip 安装的旧。
-
部分包不能通过apt-get方式安装。
如何选择
存在就是合理的,所以 apt-get 和 pip 都有各自的特点,对于我们用户来讲,最重要的莫过于我们究竟是使用 apt-get 还是使用 pip?
首先,在大多数情况下,使用 apt-get 和 pip 没有太大的差别,也就是说,我们可以根据我们自己的喜好来使用两者,但是 pip 最重要的支持在于虚拟环境( virtualenv ),我们可以使用 pip 在虚拟环境中安装依赖包。
当然我也给出这样的建议:
-
不使用 sudo pip install 安装包,在使用 pip 时不使用 root 权限。
-
不需要全局可用的包使用 pip install 安装。
-
如果包需要全局可用则使用 apt-get install python-xxx 安装。
-
使用 virtualenv 加 pip 的方式使用。