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