卸载名称开头带有连字符的 pip 依赖项

卸载名称开头带有连字符的 pip 依赖项

我意外地全局安装了一个名为 pip3 的包-igalixir。当我尝试用它卸载它时,pip3 uninstall -igalixir它会将其解释-igalixir为命令行选项。我试过用引号括起来,但同样不起作用。

pip3 list和的输出pip3 freeze如下:

$ pip3 list
Package    Version
---------- -------
-igalixir  1.0.19
click      6.7
pip        19.0.3
proxy.py   0.3
Pygments   2.2.0
requests   2.13.0
rollbar    0.13.18
setuptools 40.8.0
six        1.12.0
stripe     1.51.0
wheel      0.33.1

$ pip3 freeze
Could not parse requirement: -igalixir
click==6.7
proxy.py==0.3
Pygments==2.2.0
requests==2.13.0
rollbar==0.13.18
six==1.12.0
stripe==1.51.0

如果它是一个无效的软件包名称,我甚至不确定我一开始是如何安装它的。有没有办法彻底清除我的系统中的这个。我不希望任何随机文件挂在我的系统中 - 所以我更希望它能被正确卸载。

编辑

我尝试用 将该-igialixir术语分开--,就像这样:pip3 uninstall -- -igalixir,虽然它不再解释-igialixar为命令行选项,但它仍然不接受它,因为它是一个无效的要求。

$ pip3 uninstall -- -igalixir
Invalid requirement: '-igalixir'

答案1

引号被 shell 解释并剥离,pip 甚至没有接收它们。

在 GNU 实用程序中处理此类情况的标准方法是使用双破折号:

sometool -somearg -otherarg -- -these -are -interpreted -as -file -names

我猜 pip 可能也会使用这个约定。

答案2

我遇到了类似的情况。对我有用的是运行以下命令来查看安装所在的位置:

pip show -- -pkgname

然后我进入该文件夹并简单地删除了有问题的文件夹(它以连字符列出,但文件夹名称以波浪符号开头,~pkgname)。

这解决了我的问题。

相关内容