pip freeze列出了已卸载的软件包

时间:2012-07-24 23:01:24

标签: python macos osx-snow-leopard pip

在OS X 10.6.8上,我使用(至少pip告诉我)卸载了一个包

sudo pip uninstall pkg_name

但是当我这样做时,包裹仍会出现

pip freeze

我尝试再次执行上面的卸载命令,并且pip告诉我没有安装包。

这是什么问题?如何验证软件包是否已卸载?如果是这样,我可以刷新某种pip索引来纠正吗?

3 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,这是因为卸载文件后,自制程序中的符号链接已损坏。

$ pip freeze | grep Magic
Magic-file-extensions==0.2

$ pip uninstall Magic-file-extensions
# say `y` at prompt / see it go through as success

$ pip freeze | grep Magic # still there :(
Magic-file-extensions==0.2

$ ll /usr/local/lib/python2.7/site-packages/ | grep Magic # symlink shows up red
├── [lrwxr-xr-x tomfuert   98 Feb 16 11:06]  Magic_file_extensions-0.2-py2.7.egg-info -> ../../../Cellar/libmagic/5.17/lib/python2.7/site-packages/Magic_file_extensions-0.2-py2.7.egg-info

$ rm /usr/local/lib/python2.7/site-packages/Magic_file_extensions-0.2-py2.7.egg-info

$ pip freeze | grep Magic
# nothing!

答案 1 :(得分:3)

我认为您可能有两个pip二进制文件,当您以sudo运行时,您的shell首先会选择错误的二进制文件。但是,如果再次运行sudo并且pip删除了包,则没有任何意义。你做到了吗?

如果您没有两次运行相同的命令,则可能会有不同的pip二进制文件运行卸载并冻结。检查以下两个命令是否产生相同的输出:

$ sudo pip freeze
# ... sudo output
$ pip freeze
# ... normal output

无论如何,您可以使用以下方法检查软件包是否已安装:

$ python -c 'import pkg_name' &> /dev/null && echo installed || echo not installed

pip中没有任何类型的刷新功能。

答案 2 :(得分:0)

如果您使用虚拟环境,请尝试使用clean命令。不要忘记sudo。

sudo pipenv clean