问题:python setup.py卸载
我已经使用安装了python软件包python setup.py install
。
如何卸载?
回答 0
注意:避免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}
然后也删除包含的目录,例如/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/
on macOS
。它没有文件,但是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'
回答 1
对我来说,以下主要工作方式:
已安装点子,例如:
$ easy_install pip
从pip的角度检查已安装的软件包的名称:
$ pip freeze
这将列出您已经安装(并且被pip检测到)的所有软件包的名称。该名称可能会很长,然后仅使用和之后显示的程序包的名称#egg=
。在大多数情况下,您也可以忽略版本部分(无论是后面的==
还是-
)。
然后卸载该软件包:
$ pip uninstall package.name.you.have.found
如果它要求您确认删除软件包,那么您很幸运,它将被删除。
pip应检测所有由pip安装的软件包。它还应检测通过easy_install或setup.py安装的大多数软件包,但这在极少数情况下可能会失败。
这是来自本地测试的真实示例,带有ttr.rdstmc
在Windows上命名的软件包。
$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev
$ python setup.py develop
.....
.....
Finished processing dependencies for ttr.rdstmc==0.0.1dev
$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
-e hg+https://vlcinsky@bitbucket.org/vlcinsky/ttr.rdstmc@d61a9922920c508862602f7f39e496f7b99315f0#egg=ttr.rdstmc-dev
ttr.utcutils==0.1.1dev
$ pip uninstall ttr.rdstmc
Uninstalling ttr.rdstmc:
c:\python27\lib\site-packages\ttr.rdstmc.egg-link
Proceed (y/n)? y
Successfully uninstalled ttr.rdstmc
$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev
编辑2015-05-20
上面写的所有内容仍然适用,无论如何,现在有一些小的修改。
在python 2.7.9和python 3.4中安装pip
最新的python版本附带了一个软件包ensurepip
,即使离线也可以安装pip:
$ python -m surepip-升级
在某些系统(例如Debian Jessie)上,此功能不可用(以防止破坏系统python安装)。
使用grep
或find
上面的示例假定您已grep
安装。我(当时我的计算机上装有MS Windows)安装了一套Linux实用程序(包括grep)。或者,使用本机MS Windows find
或简单地忽略该过滤,并在更长的检测到的python软件包列表中找到名称。
回答 2
第一个答案有问题:
- 在Mac上无法使用。
- 如果安装的文件包含空格或其他特殊字符,该
xargs
命令将失败,并删除与各个单词匹配的所有文件/目录。 - 在
-r
中rm -rf
是不必要的,在最坏的情况可能会删除你不想要的东西。
相反,对于类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
安装还有一些无法解决的问题,在典型情况下不会打扰您。有关更完整的答案,请参见以下Wiki页面:
回答 3
首先记录您已安装的文件。即使您先前已经运行过,也可以重复此命令setup.py install
:
python setup.py install --record files.txt
要卸载时,您可以:
sudo rm $(cat files.txt)
之所以可行,是因为rm命令使用空格分隔的文件列表来删除,并且您的安装记录就是这样的列表。
回答 4
现在,python让您可以选择在安装pip
过程中进行安装(我在Windows上,至少python在Windows上可以!)。考虑到您已选择pip
在安装python时进行安装(实际上是默认设置,因此不必选择),pip
已经为您安装了。然后,pip
在命令提示符下键入,您应该会看到一个帮助。您可以在此处找到必要的使用说明。例如,pip list
显示已安装软件包的列表。您可以使用
pip uninstall package_name
回答 5
懒惰的方式:只需从Windows安装菜单(如果使用Windows)或从rpm命令卸载,前提是您在创建分发程序包后首先重新安装它。
例如,
python setup.py bdist_wininst
dist/foo-1.0.win32.exe
(“ foo”当然是示例)。
回答 6
转到python软件包目录并删除.egg文件,例如:在python 2.5(ubuntu)中:/usr/lib/python2.5/site-packages/
在python 2.6(ubuntu)中:/usr/local/lib/python2.6/dist-packages/
回答 7
不能完全回答问题,但每天都能对我有所帮助:
安装您的软件包
pip install .
这会将包装放入$HOME/.local
。卸载
pip uninstall <package_name>
回答 8
可能您可以这样做:
1)获取python版本-
[linux machine]# python
Python 2.4.3 (#1, Jun 18 2012, 14:38:55)
->上面的命令为您提供了当前的python版本2.4.3
2)获取python的安装目录-
[linux machine]# whereis python
python: /usr/bin/python /usr/bin/python2.4 /usr/lib/python2.4 /usr/local/bin/python2.5 /usr/include/python2.4 /usr/share/man/man1/python.1.gz
->从上面的命令中,您可以获得安装目录-/ usr/lib/python2.4/site – packages
3)从这里您可以删除软件包和python egg文件
[linux machine]# cd /usr/lib/python2.4/site-packages
[linux machine]# rm -rf paramiko-1.12.0-py2.4.egg paramiko-1.7.7.1-py2.4.egg paramiko-1.9.0-py2.4.egg
这对我有用。而且我能够卸载困扰我的软件包:)
回答 9
我认为您可以打开setup.py,找到软件包名称,然后要求pip卸载它。
假设名称在“ METADATA”变量中可用:
pip uninstall $(python -c "from setup import METADATA; print METADATA['name']")
回答 10
扩展一下Martin所说的内容,记录安装输出和一些bash脚本就可以很好地解决问题。这是我的工作
for i in $(less install.record);
sudo rm $i;
done;
和presto。已卸载。
回答 11
如果在重新安装软件包后仍有一些文件应删除,请确保该文件夹build
也已删除。因此,假设这pkg
是您要删除的软件包:
rm -r $(python3 -c "import pkg; print(pkg.__path__[0] + '*' )")
rm -rf build
以上为python3计算并删除了软件包及其* .egg-info文件
回答 12
在{virtualenv}/lib/python2.7/site-packages/
(如果未使用virtualenv,则为{system_dir}/lib/python2.7/dist-packages/
)
- 删除鸡蛋文件(例如
distribute-0.6.34-py2.7.egg
) - 如果文件中有任何内容
easy-install.pth
,请删除相应的行(它应该是源目录或egg文件的路径)。
回答 13
我过去曾经在全局环境中偶然运行过“ python setup.py install”,并且卸载时遇到很多困难。这些解决方案没有帮助。“ pip卸载”不适用于“无法卸载’splunk-appinspect’。找不到要卸载的文件。” “ sudo pip卸载”不起作用“无法卸载要求splunk-appinspect,未安装”。我尝试卸载pip,删除pip缓存,在硬盘上搜索该软件包等,…
“ pip show”最终将我引向解决方案,“ Location:”指向目录,并且重命名该目录导致打包的内容从pip列表中删除。我重命名了目录,但它没有重新出现在pip的列表中,现在我可以在virtualenv中重新安装我的软件包了。
回答 14
我python setup.py install
在PyCharm中运行了一次,它将所有软件包安装到conda基本环境中。以后,当我要删除所有这些程序包时,将pip uninstall
无法正常工作。我不得不从/anaconda3/lib/python3.7/site-packages中手动删除它们:(
因此,我看不出他们为什么使用setup.py而不是编写requirements.txt文件的原因。需求文件可用于在虚拟环境中安装软件包,并且不会与系统python软件包混淆。
回答 15
最好使用bash读取命令来删除相关文件,如下所示:
sudo python setup.py install --record files.txt
sudo bash -c "cat files.txt | xargs rm -rf"