19

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

现在看起来一团糟;如果我安装包 A,它会自动安装它的依赖项;B、C 和 D。然后我决定使用包 N 来代替它安装它的依赖项。

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

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

4

4 回答 4

15

要删除一个包:

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

...ETC

于 2018-12-14T23:59:36.363 回答
11

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

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

于 2013-10-26T16:44:00.283 回答
6

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

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

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

于 2013-10-26T21:26:35.780 回答