手动为Python2/3安装最新版Pip
在Ubuntu下面用pip的时候偶尔会遇到“owned by OS”的问题,这是由于pip和库都是由系统的apt包管理安装所导致的。需要自行安装pip才能升级到最新版本而不是软件源里提供的版本。
在Ubuntu/Debian里用pip更新python库的时候会看到这样的提示:
1 | Downloading/unpacking six from https://pypi.python.org/packages/3.3/s/six/six-1.9.0-py2.py3-none-any.whl#md5=9ac7e129a80f72d6fc1f0216f6e9627b |
这是由于pip/pip2/pip3和所需要的python库都是通过安装系统软件源中的python-pip
以及python3-pip
和诸如python-six
这样的python库软件包安装的。
为了保证pip的升级不影响软件源对这部分包的管理,Debian为它软件源中的pip打了补丁以阻止pip更新由apt管理的软件包,显示“owned by OS”的提示。
想要解决这个问题也很简单。首先用apt卸载掉系统安装的pip。
1 | sudo apt-get purge python-pip python3-pip |
然后通过pip官网提供的命令安装pip:
1 | wget https://bootstrap.pypa.io/get-pip.py |
需要注意的是,如果用Python3执行get-pip.py
脚本,它会生成pip
和pip3
两个命令,而用Python2执行,会生成pip
和pip2
两个命令。
所以根据它们执行的顺序,pip
命令会互相覆盖。所以建议先用Python3再用Python2。
当然实际上这两个脚本没有任何区别,只是第一行的shebang会指定解释器是python还是python3。安装一个之后自行拷贝修改也是可以的。
安装之后存在的问题是,原本通过系统软件源安装的python包也会被pip更新,如果之后再用apt更新的话会覆盖掉pip安装/更新的包。
所以建议有需求的话刚安装系统后就手动安装pip,然后一直使用pip管理Python库,不使用apt。