如何列出 Python 项目中使用的模块

在项目开发中,我们有时会引入一些包,后续由于种种原因,并没有 import 到项目中。如果在部署到时候使用 pip freeze,则会将这些并未引入到包也列到 requirements 中,而实际这些包是不需要的。

pipreqs 这个包就可以解决这个问题,它会分析项目中的代码,只列出被导入了的包。使用方法:

pip install pipreqs
pipreqs --encoding=utf-8-sig your_project_path --force

pipreqs 会生成 requirements.txt 到你分析的项目根目录中,与 pip freeze 生成的文件格式一致,可以使用 pip install -r requirements.txt 安装。

matplotlib==3.5.0
numpy==1.22.4
opencv_contrib_python==4.5.4.60
opencv_python_headless==4.5.5.64
Pillow==8.3.2
torch==1.9.0+cpu
torchvision==0.10.0
tqdm==4.66.1

列出并删除 Python 项目中未使用的包有几个重要的原因:

  1. 清晰性和可读性:未使用的导入会使代码更难理解和阅读。删除这些导入可以使代码更清晰,更易于理解。
  2. 减少错误:有时,未使用的导入可能会引发错误,或者在代码中引入难以追踪的错误。例如,如果你有两个库都有一个名为 open 的函数,但你只使用了其中一个库的 open 函数,那么你可能会无意中调用错误的函数。
  3. 提高性能:虽然导入未使用的库通常不会对性能产生大的影响,但在某些情况下,可能会浪费内存和处理器资源。例如,如果一个库在导入时执行了一些计算密集型的操作,但你的代码并没有实际使用这个库,那么这将是一种资源的浪费。
  4. 依赖管理:知道你的代码实际上依赖哪些包对于依赖管理非常重要。这可以帮助你减少项目的复杂性,并确保你的 requirements.txtPipfile 只包含实际需要的包。