我已经安装了一个带有python setup.py install
的python包。
如何卸载它?
答案 0 :(得分:896)
您需要手动删除所有文件,并撤消安装手动执行的任何其他操作。
如果您不知道所有文件的列表,可以使用--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/
上的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 :(得分:209)
对我而言,以下内容大多有效:
安装了pip,例如:
$ easy_install pip
检查您的安装包是如何从点子角度命名的:
$ pip freeze
这将列出您已安装的所有软件包的名称(以及由pip检测到的软件包的名称)。
名称可能有些长,然后只使用#egg=
之后和之后显示的包的名称。在大多数情况下,您也可以忽略版本部分(==
或-
后面的任何内容。)
然后卸载软件包:
$ pip uninstall package.name.you.have.found
如果它要求确认有关拆除包裹的话,那么你就是幸运的人,它将会被删除。
pip将检测由pip安装的所有软件包。它还应检测通过easy_install或setup.py安装的大多数软件包,但在极少数情况下可能会失败。
以下是来自本地测试的真实示例,其中包含MS Windows上的ttr.rdstmc
包。
$ 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
上面写的所有内容仍然适用,无论如何,现在有一些小的修改。
最近的python版本附带了一个包ensurepip
,即使在离线时也允许安装pip:
$ python -m ensurepip --upgrade
在某些系统上(如Debian Jessie),这是不可用的(为了防止破坏系统python安装)。
grep
或find
以上示例假设您已安装grep
。我(在我的机器上有MS Windows时)安装了一组linux实用程序(包括grep)。或者,使用本机MS Windows find
或者只是忽略该过滤并在更长的检测到的python包列表中找到该名称。
答案 2 :(得分:71)
#1答案有问题:
xargs
命令将失败,并删除任何
与单个单词匹配的文件/目录。-r
中的rm -rf
是不必要的,最糟糕的是可以删除你的内容
不想。相反,对于unix-like:
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 :(得分:33)
首先记录您已安装的文件。您可以重复此命令,即使您之前已运行setup.py install
:
python setup.py install --record files.txt
当你想要卸载时,你可以:
sudo rm $(cat files.txt)
这是有效的,因为rm命令需要删除一个空格分隔的文件列表,而您的安装记录就是这样的列表。
答案 4 :(得分:15)
现在python让你可以选择在安装过程中安装pip
(我在Windows上,至少python是为Windows做的!)。考虑到您在安装python期间选择安装pip
(实际上您不必选择,因为它是默认设置),已经为您安装了pip
。然后,在命令提示符下键入pip
,您应该会看到一个帮助。你可以在那里找到必要的使用说明。例如。 pip list
显示已安装软件包的列表。你可以使用
pip uninstall package_name
卸载您不再需要的任何软件包。阅读更多here (pip documentation)。
答案 5 :(得分:8)
懒惰方式:只需从Windows安装菜单(如果您使用的是Windows)或rpm命令卸载,只要您在创建分发包后首先重新安装它。
例如,
python setup.py bdist_wininst
dist/foo-1.0.win32.exe
(“foo”当然是一个例子。)
答案 6 :(得分:5)
转到python包目录并删除.egg文件, 例如。: 在python 2.5(ubuntu)中:/usr/lib/python2.5/site-packages /
在python 2.6(ubuntu)中:/usr/local/lib/python2.6/dist-packages /
答案 7 :(得分:3)
或许你可以选择这样做: -
1)获取python版本 -
[linux machine]# python
Python 2.4.3 (#1, Jun 18 2012, 14:38:55)
- &GT;上面的命令为您提供当前的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
- &GT;从上面的命令,您可以获得安装目录 - /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
这对我有用..而且我能够卸载困扰我的包装:)
答案 8 :(得分:3)
我认为您可以打开setup.py,找到软件包名称,然后请求pip卸载它。
假设该名称在“元数据”中可用。变量:
pip uninstall $(python -c "from setup import METADATA; print METADATA['name']")
答案 9 :(得分:2)
不完全回答这个问题,但每天都有帮助我的事情:
使用
安装软件包pip install .
这会将包放在$HOME/.local
中。使用
pip uninstall <package_name>
答案 10 :(得分:1)
扩展Martin的说法,记录安装输出和一些bash脚本就可以了。这就是我做的......
for i in $(less install.record);
sudo rm $i;
done;
并且presto。卸载。
答案 11 :(得分:1)
在public static int x = 0;
public static int y = 0;
public static void randomWalk(int [] moving_point) {
int r = ThreadLocalRandom.current().nextInt(4);
if(r == 0) {
moving_point[x,y] = moving_point[x,y+1];
}
}
(如果不使用virtualenv,则{virtualenv}/lib/python2.7/site-packages/
)
{system_dir}/lib/python2.7/dist-packages/
)distribute-0.6.34-py2.7.egg
中有任何内容,请删除相应的行(它应该是源目录或egg文件的路径)。答案 12 :(得分:0)
我在过去的某个时刻在我的全球环境中意外地运行了“python setup.py install”,卸载起来很困难。这些解决方案没有帮助。 “pip uninstall”无法使用“无法卸载'splunk-appinspect'。没有找到要卸载的文件。” “sudo pip uninstall”无效“无法卸载要求splunk-appinspect,未安装”。我尝试卸载pip,删除pip缓存,在硬盘上搜索包等等......
“pip show”最终让我找到了解决方案,“Location:”指向了一个目录,并重命名该目录导致打包从pip的列表中删除。我重新命名了目录,并没有重新出现在pip的列表中,现在我可以在virtualenv中重新安装我的包。
答案 13 :(得分:0)
我在PyCharm中运行过一次python setup.py install
,它将所有软件包安装到我的conda基础环境中。稍后,当我要删除所有这些软件包时,pip uninstall
不起作用。我不得不从/anaconda3/lib/python3.7/site-packages中手动删除它们:(
所以我看不出他们为什么使用setup.py而不是编写requirements.txt文件的原因。需求文件可用于在虚拟环境中安装软件包,并且不会与系统python软件包混淆。
答案 14 :(得分:0)
如果在重新安装软件包后仍有一些应删除的文件,请确保文件夹build
也已删除。因此,假设pkg
是您要删除的软件包:
rm -r $(python3 -c "import pkg; print(pkg.__path__[0] + '*' )")
rm -rf build
上面为python3计算出来并删除该软件包及其* .egg-info文件
答案 15 :(得分:0)
我在 conda 环境下使用 python setup.py develop
设置了开发 egg 链接,使用 pip uninstall <packagename>
删除了 egg 链接。至少在这种情况下,pip uninstall
是一种方法。
答案 16 :(得分:-1)
使用bash读取命令可能会更好地删除相关文件,如下所示:
sudo python setup.py install --record files.txt
sudo bash -c "cat files.txt | xargs rm -rf"