当我在 virtualenv 中使用 pip 安装软件包时,如何跟踪它们?
现在看起来一团糟;如果我安装包 A,它会自动安装它的依赖项;B、C 和 D。然后我决定使用包 N 来代替它安装它的依赖项。
现在,当我删除包 A 时,它的依赖项不会自动删除。
我怎样才能保持我的 virtualenv 干净?有没有工具可以检查未使用的包并删除它们?
当我在 virtualenv 中使用 pip 安装软件包时,如何跟踪它们?
现在看起来一团糟;如果我安装包 A,它会自动安装它的依赖项;B、C 和 D。然后我决定使用包 N 来代替它安装它的依赖项。
现在,当我删除包 A 时,它的依赖项不会自动删除。
我怎样才能保持我的 virtualenv 干净?有没有工具可以检查未使用的包并删除它们?
要删除一个包:
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
制作 virtualenvs 相对便宜。每当您遇到这种情况并再次运行您的 pip 安装时,您都可以创建一个新的 virtualenv。
不是很优雅,但它完成了工作。当然,您需要为 pip 安装维护一些需求文件,如果您有一些本地索引或 pip 缓存,它会运行得更快。
要获得干净的环境,请创建一个新环境。一些 pip 钩子可以帮助你走这条路:
pip freeze
获取已安装软件包及其版本的列表,稍后可以与-r <file>
安装包列表,在需求文件中说明--build <dir>
将构建放置在特定目录中--no-clean
不清理构建目录--no-download
--no-deps
不安装依赖项另一种方法是在“setup.py”或“requirements.txt”中命名项目的每个依赖项。cat requirements.txt
使用 virtualenv 多次练习 setup.py 或 pip install以成功运行您的应用程序。之后,手动将新依赖项添加到其中一个文件中,以使您的依赖项保持同步。