我已经用python setup.py install安装了一个python包。
如何卸载?
我已经用python setup.py install安装了一个python包。
如何卸载?
当前回答
注意:避免使用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'
其他回答
我想你可以打开setup.py,找到包名,然后让pip卸载它。
假设名称在'METADATA'变量中可用:
pip uninstall $(python -c "from setup import METADATA; print METADATA['name']")
第一条答案有问题:
不会在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
我用python setup.py在conda环境下开发了一个开发鸡蛋链接,用pip uninstall <packagename>删除了鸡蛋链接。至少在这种情况下,卸载pip是一种方法。
扩展Martin所说的内容,记录安装输出和一点bash脚本就可以很好地完成这个任务。我是这么做的…
for i in $(less install.record);
sudo rm $i;
done;
和很快。卸载。
我在我的PyCharm中运行了一次python setup.py install,它将所有的包安装到我的conda基础环境中。稍后当我想删除所有这些包时,pip卸载不起作用。我必须手动从/anaconda3/lib/python3.7/site-packages中删除它们:(
所以我不明白为什么他们使用setup.py而不是编写requirements.txt文件。需求文件可用于在虚拟环境中安装包,不会与系统python包混淆。