我已经用python setup.py install安装了一个python包。

如何卸载?


当前回答

第一条答案有问题:

不会在mac上工作。 如果安装的文件包含空格或其他特殊 字符,xargs命令将失败,并删除任何 匹配单个单词的文件/目录。 rm -rf中的-r是不必要的,在最坏的情况下可能会删除你的东西 我不想。

相反,对于类unix:

sudo python setup.py install --record files.txt
# inspect files.txt to make sure it looks ok. Then:
tr '\n' '\0' < files.txt | xargs -0 sudo rm -f --

对于windows:

python setup.py bdist_wininst
dist/foo-1.0.win32.exe

卸载setup.py install还存在一些无法解决的问题,在典型情况下,这些问题不会困扰您。要获得更完整的答案,请参阅这个wiki页面:

https://ofswiki.org/wiki/Uninstalling_setup.py_install

其他回答

使用bash读取命令来删除相关文件可能会更好,如下所示:

sudo python setup.py install --record files.txt
sudo bash -c "cat files.txt | xargs rm -rf"

如果在重新安装包后仍然有应该删除的文件,请确保文件夹构建也被删除。因此,假设pkg是要删除的包:

rm -r $(python3 -c "import pkg; print(pkg.__path__[0] + '*' )") 
rm -rf build

为python3计算并删除包及其*。egg-info文件

注意:避免使用python setup.py install使用pip install。

您需要手动删除所有文件,并撤消安装时手动执行的任何其他操作。

如果您不知道所有文件的列表,您可以使用——record选项重新安装它,并查看生成的列表。

要记录已安装文件的列表,您可以使用:

python setup.py install --record files.txt

一旦你想卸载,你可以使用xargs来删除:

xargs rm -rf < files.txt

或者如果你运行的是Windows,使用Powershell:

Get-Content files.txt | ForEach-Object {Remove-Item $_ -Recurse -Force}

然后在macOS上删除包含的目录,例如/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/。它没有文件,但是Python仍然会导入一个空模块:

>>> import my_module
>>> my_module.__file__
None

一旦删除,Python会显示:

>>> import my_module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'my_module'

我并没有完全回答这个问题,但我每天都在帮助我:

使用

pip install .

这将把包放在$HOME/.local中。卸载与

pip uninstall <package_name>

首先记录您已安装的文件。你可以重复这个命令,即使你之前已经运行了setup.py install:

python setup.py install --record files.txt

当你想卸载时,你可以:

sudo rm $(cat files.txt)

这是可行的,因为rm命令接受一个以空格分隔的文件列表来删除,而您的安装记录就是这样一个列表。