【问题标题】:How can I 'clean up' a virtualenv?我怎样才能“清理”一个virtualenv?
【发布时间】:2016-05-06 16:10:49
【问题描述】:

如果我想让我的 venv 尽可能干净,我该如何清理我不需要的东西?让我举个例子……

假设我尝试了一堆新模块...

pip install foo
pip install bar
pip install foobar
pip install foobarfoo

这些模块有自己的一些要求,等等。后来我决定要使用哪一个,但后来我的requirements.txt中有一大堆东西,我不记得我需要什么了什么我不知道,什么取决于什么,等等。

我怎样才能保持它的清洁和精益?

【问题讨论】:

  • “稍后我决定要使用哪个” - 然后创建一个新的 virtualenv 并安装你想要的
  • 重点是我不确定基于依赖关系我需要什么。当然我可以删除整个东西,让我的进程失败并安装,但我正在寻找一种更简单的方法

标签: python pip virtualenv


【解决方案1】:

要卸载每个包(包括依赖项),您可以冻结需求,然后将它们传递给pip uninstall

pip freeze > to-uninstall.txt
pip uninstall -r to-uninstall.txt

【讨论】:

  • 这是我整个星期看到的最好的东西。谢谢!!!
  • 这是一个很好的解决方案。但是,对于较大的虚拟环境,必须确认每个包的删除可能很烦人。在这种情况下,我建议使用:pip uninstall -y -r to-uninstall.txt 绕过提示
【解决方案2】:

以下对我有用(可以从任何 Python 3.6 virtualenv 执行):

virtualenv --clear your-env-name

your-env-name 可能在哪里:

  • 虚拟环境的路径(相对于当前目录或绝对路径)
  • 或者如果您使用virtualenv-wrapper,则只需环境名称

【讨论】:

    【解决方案3】:

    This 答案可能正是您所需要的。

    您可以安装和使用pip-autoremove 实用程序来删除软件包 加上未使用的依赖项。

    # install pip-autoremove 
    pip install pip-autoremove
    # remove "somepackage" plus its dependencies: 
    pip-autoremove somepackage -y
    

    【讨论】:

    • 完成后不要忘记删除 pip-autoremove! :->
    • 为什么我要在完成后删除 pip autoremove 而不是将其留在那里以备将来使用?
    • 我想知道pip卸载是否不会...当我使用pip-autoremove删除时,有一些pip-autoremove无法处理的依赖项(似乎删除的顺序是重要)而 pip 卸载工作正常。
    • @fanny pip uninstall 根本不会删除任何依赖项。
    【解决方案4】:

    another answer略有改进

    使用 pip 但添加 -y 以避免提示每个库。

    完成后不要忘记删除文件“to_uninstall.txt”!

    pip freeze > to_uninstall.txt
    pip uninstall -y -r to_uninstall.txt
    

    【讨论】:

      【解决方案5】:

      您可以使用pip-toolspip-sync 功能来保持环境清洁。

      来自pip-tools' documentation

      现在您有了 requirements.txt,您可以使用 pip-sync 更新您的虚拟环境以准确反映其中的内容。这将安装/升级/卸载匹配 requirements.txt 内容所需的一切。

      只需安装 pip-tools 并调用 pip-sync 命令:

      pip install pip-tools
      pip-sync requirements.txt
      

      (旁注:pip-tools 还可以很好地管理您的依赖版本,以使您的构建可预测和确定;有关更多信息,请参阅pip-tools' documentation

      【讨论】:

        【解决方案6】:

        我刚刚为此写了一个单行:

        pip list | tail +3 | cut -f1 -d\  | xargs pip uninstall -y
        

        之后,您可能想要:

        python -m ensurepip --upgrade
        

        要找回pip

        【讨论】:

          【解决方案7】:
          pip freeze | xargs pip uninstall -y
          

          (灵感来自Tripp Kinetics' answer

          【讨论】:

            【解决方案8】:

            pip uninstall 后跟一个或多个包名将从虚拟环境中删除包。

            Python Documentation

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-10-05
              • 2022-11-27
              • 2021-12-25
              • 2019-09-01
              • 2013-05-13
              • 2021-11-12
              • 2016-11-25
              相关资源
              最近更新 更多