首页 文章

python setup.py卸载

提问于
浏览
667

我安装了一个带有 python setup.py install 的python包 .

我该如何卸载它?

13 回答

  • 1

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

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

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

    python setup.py install --record files.txt
    

    一旦要卸载,可以使用xargs进行删除:

    cat files.txt | xargs rm -rf
    

    或者,如果您正在运行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'
    
  • 0

    对我来说,以下几乎是有效的:

    安装了点子,例如:

    $ easy_install pip
    

    检查,您从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
    

    编辑2015-05-20

    以上所写内容仍然适用,无论如何,现在可以进行小的修改 .

    在python 2.7.9和python 3.4中安装pip

    最近的python版本带有一个包 ensurepip ,即使在离线时也允许安装pip:

    $ python -m ensurepip --upgrade

    在某些系统(如Debian Jessie)上,这是不可用的(为了防止破坏系统python安装) .

    使用grep或find

    上面的示例假设您安装了 grep . 我(在我的机器上有MS Windows时)安装了一组linux实用程序(包括grep) . 或者,使用本机MS Windows find 或者只是忽略该过滤并在更长的检测到的python包列表中找到该名称 .

  • 5

    #1答案有问题:

    • 无法在mac上运行 .

    • 如果安装的文件包含空格或其他特殊字符,则 xargs 命令将失败,并删除与单个单词匹配的所有文件/目录 .

    • rm -rf 中的 -r 是不必要的,最坏的情况是删除你不想要的东西 .

    相反,对于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 install时也存在无法解决的问题,在典型情况下不会打扰您 . 有关更完整的答案,请参阅此Wiki页面:

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

  • 3

    首先记录您已安装的文件 . 您可以重复此命令,即使您之前已运行 setup.py install

    python setup.py install --record files.txt
    

    当您想要卸载时,您可以:

    sudo rm $(cat files.txt)
    

    这是有效的,因为rm命令需要删除一个空格分隔的文件列表,而您的安装记录就是这样一个列表 .

  • 3

    现在python让你选择在安装过程中安装 pip (我在Windows上,至少python为Windows做到了!) . 考虑到您在安装python期间选择安装 pip (实际上您不必选择,因为它是默认设置),已经为您安装了 pip . 然后,在命令提示符下键入 pip ,您应该看到一个帮助 . 您可以在那里找到必要的使用说明 . 例如 . pip list 显示已安装软件包的列表 . 您可以使用

    pip uninstall package_name
    

    卸载任何你不想要的包 . 阅读更多here (pip documentation) .

  • 8

    懒惰方式:只需从Windows安装菜单(如果您使用的是Windows)或rpm命令卸载,只要您在创建分发包后首先重新安装它 .

    例如,

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

    (“foo”当然是一个例子) .

  • 29

    转到你的python包目录并删除.egg文件,例如:在python 2.5(ubuntu)中:/usr/lib/python2.5/site-packages/

    在python 2.6(ubuntu)中:/usr/local/lib/python2.6/dist-packages/

  • 0

    可能你可以这样做: -

    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
    

    这对我有用..而且我能够卸载困扰我的包:)

  • 14

    我想你可以打开setup.py,找到包名,然后请求pip卸载它 .

    假设该名称在'METADATA'中可用变量:

    pip uninstall $(python -c "from setup import METADATA; print METADATA['name']")
    
  • 202

    不是完全回答这个问题,而是每天帮助我的事情:

    安装你的包

    pip install .
    

    这将包放在 $HOME/.local 中 . 用 . 卸载

    pip uninstall <package_name>
    
  • 2

    扩展Martin所说的,记录安装输出和一些bash脚本就可以很好地完成这个工作 . 这就是我做的......

    for i in $(less install.record);
    sudo rm $i;
    done;
    

    并且presto . 卸载 .

  • 66

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

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

    我在过去的某个时刻在我的全球环境中意外地运行了“python setup.py install”,卸载起来很困难 . 这些解决方案没有帮助 . “pip uninstall”无法使用“无法卸载'splunk-appinspect' . 没有找到要卸载的文件 . ” “sudo pip uninstall”无效“无法卸载要求splunk-appinspect,未安装” . 我尝试卸载pip,删除pip缓存,搜索我的硬盘驱动器包等...

    “pip show”最终让我找到了解决方案,“Location:”指向了一个目录,并重命名该目录导致打包从pip的列表中删除 . 我重新命名了目录,并没有重新出现在pip的列表中,现在我可以在virtualenv中重新安装我的包 .

相关问题