【问题标题】:How to uninstall package in Anaconda installed with pip如何在使用 pip 安装的 Anaconda 中卸载软件包
【发布时间】:2018-06-28 10:53:09
【问题描述】:

问题:

我已经安装了 Anaconda:

conda -V
conda 4.4.7

我还使用python3 setup.py install 为它安装了很多包。 我将它用于从setup.py 文件创建的一些包。

现在我想卸载一个包。

我尝试了什么:

pip uninstall packageName
pip3 uninstall packageName
conda uninstall packageName

它适用于 python:检查 pip listpip3 list 并且没有这样的包。

错误:

但是对于 conda,我得到了这个:

conda uninstall packageName
Solving environment: failed

PackagesNotFoundError: The following packages are missing from the target environment:
  - packageName

让我们检查一下:

conda list
packageName

附:我发现conda uninstallconda remove 在这种情况下不起作用的信息。但是那该怎么办呢?

附言实际上,我在packageName 更改了真实的包名,但如果此信息很重要,我会添加它。


我的信息:

conda info

     active environment : None
       user config file : /home/masamok4/.condarc
 populated config files : /home/masamok4/anaconda3/.condarc
                          /home/masamok4/.condarc
          conda version : 4.4.7
    conda-build version : 3.0.27
         python version : 3.6.3.final.0
       base environment : /home/masamok4/anaconda3  (writable)
           channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.continuum.io/pkgs/main/linux-64
                          https://repo.continuum.io/pkgs/main/noarch
                          https://repo.continuum.io/pkgs/free/linux-64
                          https://repo.continuum.io/pkgs/free/noarch
                          https://repo.continuum.io/pkgs/r/linux-64
                          https://repo.continuum.io/pkgs/r/noarch
                          https://repo.continuum.io/pkgs/pro/linux-64
                          https://repo.continuum.io/pkgs/pro/noarch
          package cache : /home/masamok4/anaconda3/pkgs
                          /home/masamok4/.conda/pkgs
       envs directories : /home/masamok4/anaconda3/envs
                          /home/masamok4/.conda/envs
               platform : linux-64
             user-agent : conda/4.4.7 requests/2.18.4 CPython/3.6.3 Linux/4.4.0-87-generic ubuntu/16.04 glibc/2.23
                UID:GID : 1003:1003
             netrc file : None
           offline mode : False

【问题讨论】:

  • 嗯...有点混乱。但是condapip 有不同的索引方式。 conda使用文件记录索引,pip直接扫描lib目录。所以尽管conda list 可以显示所有包,包括pip installed。 pip 安装的包不在conda 的控制范围内。
  • @Sraw 感谢您的回复!好的,我明白了,但是在我使用pip uninstall 之后,conda 怎么能包含这个包?
  • 这个问题解决了吗?
  • @Mihaela 我不能肯定 - 我重新安装了整个 anaconda,所以我现在无法重现这种行为

标签: python pip anaconda


【解决方案1】:

你可以使用 Jupyter Notebook 来解​​决这个问题:

  • 打开 Jupyter Notebook
  • 使用正确的内核打开一个新笔记本
  • 在代码单元格中输入!pip uninstall -y [package]
  • 运行单元格代码

【讨论】:

  • 正确的内核是什么意思?你的意思是正确的环境?还是正确的python?
  • @agent18 你必须在切换到你要修改的环境后运行你的笔记本
  • 这对你有用吗@xiawi ?对我来说没有。
  • 对于我提出的答案(不是这个,您对此发表评论),它包括列出包的所有文件然后删除它们。因此,是的,“它有效”,但在依赖方面存在风险。如果,对你来说,它“不起作用”,你应该问另一个问题,解释“它不起作用”的确切原因(因为乍一看并不明显)
【解决方案2】:

在 conda 环境中卸载所有 pypi 包的最佳方式无疑是:

conda activate <your-env>
conda list | awk '/pypi/ {print $1}' | xargs pip uninstall -y

【讨论】:

    【解决方案3】:

    如果您使用setup.py 安装包,那么您很可能必须手动删除包文件。

    您会发现Uninstalling setup.py install wiki 很有用。下面引用的 Unix 指令:

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

    【讨论】:

    • 如果其他包依赖,有什么办法可以防止卸载该包?
    • 不,恐怕不行!
    【解决方案4】:

    在 conda 环境中使用 pip 时必须小心,无论是安装还是卸载软件包。对我有用的是基于https://stackoverflow.com/a/43729857/1047213

    1. 通过在 conda 环境中运行 conda install pip 来安装特定于 conda 环境的 pip
    2. 在安装或卸载软件包时指定特定pip 的完整路径。通常,您会在虚拟环境的bin 文件夹中找到它(例如,/anaconda/envs/venv_name/bin/)。因此,以下对我有用:/anaconda/envs/venv_name/bin/pip install_or_uninstall package_name

    【讨论】:

    • 感谢您的回答!我已经没有这样的配置,所以现在不能检查但是会检查是否再次遇到这个问题
    【解决方案5】:

    如下图conda uninstall -h

    --force-remove, --force
                            Forces removal of a package without removing packages
                            that depend on it. Using this option will usually
                            leave your environment in a broken and inconsistent
                            state.
    
    

    所以,我认为您的特定软件包 packageName 没有安装好。也就是它的依赖包没有安装好,所以要卸载包packageName。另外conda uninstall packageName失败了,你可以试试

    conda uninstall packageName --force
    

    ,其用法与命令pip uninstall packageNamepip3 uninstall packageName 相同。那就是“删除一个包而不删除依赖它的包”。

    希望它对你有用。

    【讨论】:

      猜你喜欢
      • 2018-07-27
      • 1970-01-01
      • 2016-07-16
      • 2012-10-22
      • 1970-01-01
      • 2017-04-24
      • 2017-08-15
      • 1970-01-01
      • 2018-11-08
      相关资源
      最近更新 更多