在尝试为另一个问题构建MCVE时,我创建了一个example
目录,其中包含一个文件,setup.py
,其中包含以下内容:
from setuptools import setup
setup(
name='example',
)
并用
安装python3.6 setup.py sdist
python3.6 -m pip install --user dist/example-0.0.0.tar.gz
没有实际的软件包或模块,但是安装了某些东西:
redacted:~/example> python3.6 -m pip list | grep example
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
example (0.0.0)
现在我无法卸载它:
redacted:~/example> python3.6 -m pip uninstall example
Can't uninstall 'example'. No files were found to uninstall.
Other posts建议我必须从.pth
目录中删除site-packages
个文件,但我看不到:
redacted:~/example> find ~/.local/lib/python3.6/site-packages/ -name '*.pth'
redacted:~/example>
我刚刚对我的系统做了什么,以及如何撤消它?
答案 0 :(得分:0)
由于您未指定任何文件,因此无需安装任何内容。所以你也无法卸载任何东西。
答案 1 :(得分:0)
看起来这可能没有安装任何东西。甚至不是元数据,虽然它似乎一开始就是这样。
以python3.6 -m pip
而不是pip3.6
运行pip会将当前目录放在导入路径上 - 在我的情况下,当前目录是具有setup.py
的目录和由目录构建的目录python3.6 setup.py sdist
。 pip搜索导入路径以查找已安装的包,当它运行到空项目的元数据时,它会变得混乱。它似乎发现此处列出的所有0个文件都已安装,因此必须安装该项目。
在同一目录中运行python2.7 -m pip list
也会为example (0.0.0)
生成一个条目,即使我绝对没有在2.7上安装它。运行pip2.7 list
或pip3.6 list
不会显示该条目。从其他目录运行python2.7 -m pip list
或python3.6 -m pip list
也不会显示条目:
redacted:~/example> python2.7 -m pip list 2>&1 | grep example
example (0.0.0)
redacted:~/example> python3.6 -m pip list 2>&1 | grep example
example (0.0.0)
redacted:~/example> pip2.7 list 2>&1 | grep example
redacted:~/example> pip3.6 list 2>&1 | grep example
redacted:~/example> cd
redacted:~> python2.7 -m pip list 2>&1 | grep example
redacted:~> python3.6 -m pip list 2>&1 | grep example
redacted:~>
鉴于此输出,我认为我不需要做任何事情来卸载此软件包。