从需求fi中删除未使用的包

2024-05-12 19:54:31 发布

您现在位置:Python中文网/ 问答频道 /正文

有什么简单的方法可以从requirements文件中删除不再使用的包吗?

我为这个任务编写了一个bash脚本,但是,它并没有像我预期的那样工作。因为,有些包不在它们的PyPI项目名之后使用。例如

dj-database-url

包用作

dj_database_url

我的项目在它自己的需求文件中有许多包,因此,逐个搜索它们太混乱,容易出错,并且花费太多时间。在我搜索的时候,IDEs还没有这个属性。


Tags: 文件项目方法脚本pypibashurl属性
2条回答

最好的办法是使用一个(fresh)python virtual env和no包,或者只使用那些您确定需要的包,测试您的包-在遇到问题时使用pip安装丢失的包,这对于大多数软件来说应该非常快,然后使用pip freeze命令列出您真正需要的包。最好使用pip wheel创建一个包含包的轮子。
另一种方法是:

  1. 使用pylint检查每个文件中是否有未使用的导入并删除它们(无论如何,您都应该这样做)
  2. 运行测试以确保它是正确的
  3. 使用类似snakefood的工具生成新的依赖项列表

请注意,为了使任何依赖项检查工作正常,建议避免在函数内进行条件导入和导入。

还要注意,要确保您拥有一切,那么最好构建一个新的虚拟env并从依赖项列表中安装,然后重新测试代码。

可以在PyCharm中使用代码检查。

删除requirements.txt的内容,但保留空文件。 在中加载项目,PyCharm转到Code -> Inspect code...。在对话框中选择Whole project选项,然后单击OK。 在“检查结果”面板中,在Python下找到Package requirements部分(请注意,只有存在requirements.txtsetup.py文件时才会显示此部分)。 该部分将包含以下消息之一:

  • Package requirement '<package>' is not satisfied如果requirements.txt中列出了任何未在任何.py文件中使用的包。
  • Package '<package>' is not listed in project requirements如果有任何包在.py文件中使用,但未在requirements.txt中列出。

你对第二次检查感兴趣。 右键单击Package requirements部分并选择Apply Fix 'Add requirements '<package>' to requirements.txt',可以将所有使用过的包添加到requirements.txt。注意,它将只显示一个包名,但如果调用部分,它实际上会将所有使用过的包添加到requirements.txt

如果需要,可以逐个添加,只需右键单击某个包对应的检查并选择Apply Fix 'Add requirements '<package>' to requirements.txt',对此类检查重复此操作。

之后,您可以创建干净的虚拟环境并从新的requirements.txt安装软件包。

还要注意,PyCharm具有导入优化功能,请参见Optimize imports...。在执行上面列出的任何其他步骤之前使用此功能可能会很有用。

Apply fix for all packages not listed in requirements.txt

相关问题 更多 >