有没有简单的方法可以从要求文件中删除不再使用的包?
我为此任务编写了一个bash脚本,但是它没有按照我的预期工作。因为,某些包不遵循其PyPI项目名称。例如;
dj-database-url
包用作
dj_database_url
我的项目在自己的需求文件中有很多包,因此,逐个搜索它们太杂乱,容易出错并且需要花费太多时间。在我搜索时,IDE还没有这个属性。
答案 0 :(得分:52)
您可以在PyCharm中使用代码检查。
删除requirements.txt
的内容,但保留空文件。
加载您的项目,PyCharm转到Code -> Inspect code...
。在对话框中选择Whole project
选项,然后点击OK
。
在检查结果面板中,找到Package requirements
下的Python
部分(请注意,仅当有requirements.txt
或setup.py
文件时才会显示此部分。
该部分将包含以下消息之一:
Package requirement '<package>' is not satisfied
如果requirements.txt
中列出的任何包但未在任何.py文件中使用过。Package '<package>' is not listed in project requirements
如果.py文件中使用了任何软件包,但未在requirements.txt
中列出。您对第二次检查感兴趣。
您可以通过右键单击requirements.txt
部分并选择Package requirements
,将所有已使用的包添加到Apply Fix 'Add requirements '<package>' to requirements.txt'
。请注意,它只显示一个包名称,但如果调用了section,它实际上会将所有使用过的包添加到requirements.txt
。
如果需要,可以逐个添加,只需右键单击与某个包对应的检查,然后选择Apply Fix 'Add requirements '<package>' to requirements.txt'
,对每种检查重复一次。
之后,您可以创建干净的虚拟环境并从新的requirements.txt
安装软件包。
另请注意,PyCharm具有导入优化功能,请参阅Optimize imports...。在上面列出的任何其他步骤之前使用此功能会很有用。
答案 1 :(得分:7)
最好的办法是使用(新鲜)python virtual-env和 no 包,或者只使用你确定需要的那些,测试你的包 - 安装缺失当您遇到问题时,pip
的软件包应该对大多数软件来说非常快,然后使用pip freeze
命令列出您真正需要的软件包。更好的是,您可以使用pip wheel
创建包含的轮子。
另一种方法是:
答案 2 :(得分:0)
我已成功使用pip-check-reqs。
使用命令pip-extra-reqs your_directory
,它将检查your_directory
使用pip install pip-check-reqs
安装。