【问题标题】:Why is the command 'sudo pip uninstall' not working?为什么命令“sudo pip uninstall”不起作用?
【发布时间】:2014-02-17 10:10:59
【问题描述】:

当我在 Ubuntu 中输入以下命令时,它会显示所有 python 包列表:

$  sudo pip list
adium-theme-ubuntu (0.3.2)
apt-xapian-index (0.44)
apturl (0.5.1ubuntu3)
argparse (1.2.1)
BeautifulSoup (3.2.0)
Brlapi (0.5.6)
bzr (2.5.1)
chardet (2.0.1)
command-not-found (0.2.44)
dirspec (3.0.0)
distribute (0.7.3)
dnspython (1.9.4)
docutils (0.8.1)
duplicity (0.6.18)
gdata (2.0.14)
GnuPGInterface (0.3.2)
httplib2 (0.7.2)
jockey (0.9.7)
louis (2.3.0)
mercurial (2.0.2)
nvidia-common (0.0.0)
onboard (0.97.1)
oneconf (0.2.8.1)
PAM (0.4.2)
paramiko (1.7.7.1)
pexpect (2.3)
pip (1.4.1)
piston-mini-client (0.7.2)
Pmw (1.3.2)
psutil (0.4.1)
psycopg2 (2.4.5)
PyChart (1.39)
pycrypto (2.4.1)
pycups (1.9.61)
pycurl (7.19.0)
pydot (1.0.2)
pyinotify (0.9.2)
pyOpenSSL (0.12)
pyparsing (1.5.2)
pyserial (2.5)
pysmbc (1.0.13)
python-apt (0.8.3ubuntu7.2)
python-ldap (2.3.13)
python-openid (2.2.5)
python-virtkey (0.60.0)
pyxdg (0.19)
PyYAML (3.10)
reportlab (2.5)
sessioninstaller (0.0.0)
setuptools (0.8b2)
simplejson (2.3.2)
system-service (0.1.6)
Twisted-Core (11.1.0)
Twisted-Names (11.1.0)
Twisted-Web (11.1.0)
ubuntuone-couch (0.3.0)
ubuntuone-installer (3.0.2)
ubuntuone-storage-protocol (3.0.2)
ufw (0.31.1-1)
unattended-upgrades (0.1)
unittest2 (0.5.1)
unity-lens-video (0.3.5)
unity-scope-video-remote (0.3.5)
usb-creator (0.2.23)
uTidylib (0.2)
wsgiref (0.1.2)
xdiagnose (2.5.3)
xkit (0.0.0)
xlwt (0.7.2)
ZSI (2.1-a1)

当我导入一个特定的包时,它运行良好:

$ sudo python
Python 2.7.3 (default, Sep 26 2013, 20:08:41) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import argparse
>>> 

但是当我尝试卸载特定包时,它会抛出如下错误:

$  sudo pip uninstall argparse
Can't uninstall 'argparse'. No files were found to uninstall.

为什么我会遇到上述问题?

【问题讨论】:

  • 是使用 pip 还是使用您的发行版的包管理器安装了上述包(在您的示例中为 argparse)?不管用什么方法安装它,你都应该用同样的方法来卸载它。
  • sudo安装了那个包吗?
  • @MatToufoutu 感谢您的回复。在包安装时,我没有使用 pip。但我现在需要卸载这些包。

标签: python ubuntu pip sudo


【解决方案1】:

如果你没有使用 pip 安装argparse(不太可能,因为它是 python 核心库),你不要使用 pip 来卸载它。

【讨论】:

  • 你有什么好的理由卸载它吗?它是核心库,因此它应该存在于任何标准的 python 安装中。描述你实际面临的问题
  • 你可以从我的列表中找到BeautifulSoup (3.2.0),我认为这不是核心库。在这种情况下,我给出了示例argparse 来卸载,好吧,这不像你说的那样好。但我需要卸载BeautifulSoup。如何处理?
  • 也许你是用apt-get 安装的。有一个包叫python-beautifulsoup
  • sudo apt-get purge python-beautifulsoup
  • 谢谢我终于意识到你是对的。我已经成功卸载了beautifulsoup
【解决方案2】:

对于不太旧的 python 版本(python 2.7+),argparse 是 python 发行版的一部分,因此你不能轻易卸载它(无论如何这样做也不是一个好主意)。

根据 cmets,可以使用 easy_install -m 执行此操作,然后删除 .egg 文件。

另外,您通常不能使用pip 卸载您尚未安装使用pip 的软件包。使用您安装软件包的任何内容来卸载它。您的包管理器 (apt-get) 是这里的一种选择。

【讨论】:

  • 是的,我知道(并在答案的第一部分写了它)。第二部分是答案的更一般的部分。这里不需要-1。
  • -1 因为您可以卸载 argparse。这不是一个好主意,仅此而已。
  • 你将如何卸载 argparse?现在我很好奇。 :-) pipapt-get 都出来了,还剩下什么(除了手动删除文件)?
  • 虽然 argparse 是核心库,但它仍然只是安装在站点包中的一个外部模块(我认为您应该可以使用 easy_install -m 将其删除,然后删除 .egg)。我对您投了反对票,因为您的答案包含不正确的信息(“afaik”),请不要私信。
  • 在我的 ubuntu 安装中,argparse 位于 /usr/lib/python2.7/argparse.py,而不是站点包中。
最近更新 更多