python-Not uninstalling at /usr/lib/python2.7/dist-packages, owned by OS

本文描述了在Ubuntu系统中使用pip卸载requests库时遇到的权限问题,由于通过apt-get安装,库位于/usr/lib/python2.7/dist-packages而非site-packages。解决方案包括手动删除库、创建软链接以及更新依赖包版本,确保正确安装和卸载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提

通常

使用pip install xxx 来安装某一库。

使用 pip uninstall xxx 来卸载。

而pip 的也可以采用常见的两种安装方法

在centos系列下
使用sudo yum install python-pip
删除sudo yum remove python-pip

在ubuntu 系列下
使用 sudo apt-get install python-pip
删除 sudo apt-get autoremove python-pip

这两个系统都可以使用
https://pip.pypa.io/en/stable/installing/
提供的安装py脚本
下载后执行 sudo python get-pip.py

问题

我在删除requests这个第三方库时候,centos上直接执行了
pip uninstall requests 便删除掉了该库。

而同样的操作在ubuntu上却提示了
Not uninstalling at /usr/lib/python2.7/dist-packages, owned by OS

可以看到提示属于系统,无法删除。

很是疑惑。一个小小的库,怎么属于系统了呢?

原来这台ubuntu 的pip 采用的是apt-get install python-pip 方法安装的。

import requests
print requests.__file__

上面的方法可以看到该库的位置

/usr/lib/python2.7/dist-packages

而我印象中的库一般都是存放在site-packages 中。

查阅了一下

dist-packages 是 Debian特定惯例,这也存在于像是ubuntu上。 如果使用Debian软件管理器安装, 模块将被安装到 dist-packages:
/usr/lib/python2.7/dist-packages

dist-packages取代了site-packages。从Debian安装包安装的第三方的Python软件 被 安装到 dist-packages,不是 site-packages.这是为了减少,系统自带python 和 你手动安装的python 之间的冲突。

这就是说,如果你手动安装python,它会直接使用目录site-packages。这允许你让两个安装隔离开来,特别是因为Debian 和 Ubuntu 应用 python的系统版本 到 许多的系统实体。

可见是ubuntu的这个特性造成的问题。

于是到该目录删除掉requests 包。
apt-get autoremove python-pip

采用脚本的方法安装。

之后执行发现提示 No such file or directory

which 一下,发现pip 和python 不在一个目录下

这里写图片描述

执行
ln -s /usr/local/bin/pip /usr/lib/pip

建立软连接,然后使用该pip 安装的requests就进入正常的site-packages 文件夹中。
也可以使用pip uninstall 删除了。

后续

在交互界面import requests 后,提示

/usr/local/lib/python2.7/dist-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.21.1) or chardet (2.0.1) doesn’t match a supported version!
RequestsDependencyWarning)

可见requests库依赖的包有 urllib3以及 chardet

版本不匹配是因为,我们使用apt-get install requests 时也自动安装了这俩个依赖库,而我们删除时却没有删掉他们。

为此,执行

apt-get autoremove urllib3
apt-get autoremove chardet

这样就删除掉存在/usr/lib/python2.7/dist-packages下面的包。

在执行pip install requests .
此次的依赖包就会安装到 /usr/local/lib/pytrhon2.7/dist-packages 下面。

再次导入就不会有问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值