【问题标题】:How can I remove unused packages from virtualenv?如何从 virtualenv 中删除未使用的包?
【发布时间】:2013-10-26 16:28:10
【问题描述】:

当我在 virtualenv 中使用 pip 安装软件包时,如何跟踪它们?

现在看起来很乱;如果我安装包 A,它会自动安装它的依赖项; B、C 和 D。然后我决定改用包 N 来安装它的依赖项。

现在,当我删除包 A 时,它的依赖项不会自动删除。

如何保持我的 virtualenv 干净?有没有工具可以检查未使用的包并删除它们?

【问题讨论】:

  • "现在,当我删除包 A 时,它的依赖项不会自动删除" 感谢上帝,它们没有被删除!依赖项可以被任意数量的包使用,因此在没有全面检查的情况下删除它们是不正确的
  • pipenvpip-autoremove,虽然我不确定它在这种情况下是否有效。

标签: python virtualenv pip


【解决方案1】:

要删除一个包:

pip uninstall package_name

获取任何给定包所需的包列表(使用 pip):

pip show package_name

这将向您显示运行所需的包,以及需要您的包才能运行的包。

所以卸载一个包及其所有依赖包的最佳方法是先运行pip show package_name查看其依赖包列表,然后将其连同其依赖包一一卸载。例如:

pip show package_name
pip uninstall package_name
pip uninstall dependency_package_1
pip uninstall dependency_package_2

...等

【讨论】:

    【解决方案2】:

    制作 virtualenvs 相对便宜。每当遇到这种情况时,您都可以创建一个新的 virtualenv 并再次运行您的 pip 安装。

    不是很优雅,但它可以完成工作。当然,你需要维护一些 pip 安装的需求文件,如果你有一些本地索引或 pip 缓存,它会更快。

    【讨论】:

      【解决方案3】:

      要获得干净的环境,请创建一个新环境。一些 pip 钩子可以帮助你走这条路:

      • pip freeze 获取已安装软件包及其版本的列表,以后可以与
      • 一起使用
      • -r <file> 安装包列表,在需求文件中说明
      • --build <dir> 将构建放置在特定目录中
      • --no-clean 不清理构建目录
      • 稍后您可以将这些构建与--no-download 一起使用
      • --no-deps 不安装依赖项

      【讨论】:

        【解决方案4】:

        另一种方法是在“setup.py”或“requirements.txt”中命名项目的每个依赖项。使用 virtualenv 多次运行 setup.py 或 pip install cat requirements.txt 以成功运行您的应用程序。之后,手动将新依赖项添加到其中一个文件中,以使您的依赖项保持同步。

        【讨论】:

          猜你喜欢
          • 2012-06-15
          • 2023-02-26
          • 2017-08-28
          • 2014-10-12
          • 2012-07-19
          • 1970-01-01
          • 2012-06-29
          • 1970-01-01
          相关资源
          最近更新 更多