有没有简单的方法从requirements文件中删除不再使用的包?
我为此编写了一个bash脚本,但它并没有像我预期的那样工作。因为有些包不是按照它们在PyPI项目中的名称使用的。例如:
dj-database-url
包被用作
dj_database_url
我的项目在自己的需求文件中有许多包,所以逐个搜索它们太混乱、容易出错并且耗时过长。据我所知,集成开发环境还没有这个功能。
有没有简单的方法从requirements文件中删除不再使用的包?
我为此编写了一个bash脚本,但它并没有像我预期的那样工作。因为有些包不是按照它们在PyPI项目中的名称使用的。例如:
dj-database-url
包被用作
dj_database_url
我的项目在自己的需求文件中有许多包,所以逐个搜索它们太混乱、容易出错并且耗时过长。据我所知,集成开发环境还没有这个功能。
requirements.txt
文件的内容,但保留空文件。Code -> Inspect code...
。Whole project
选项并点击OK
。
在检查结果面板中,找到Python
下的Package requirements
部分(请注意,该部分只有在有requirements.txt
或setup.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具有导入优化功能,请参见优化导入...。在执行上述任何其他步骤之前使用此功能可能会很有用。
from rest_framework import status
但使用上述步骤时,它没有将rest_framework
添加到我的要求文件中。 - Nwilsonpip
安装缺失的包,这对于大多数软件来说应该很快,然后使用pip freeze
命令列出你真正需要的包。更好的方法是使用pip wheel
来创建一个包含这些包的wheel文件。snakefood
不支持 python3
,目前网站上源代码的 URL 是错误的,正确的 URL 是:https://github.com/blais/snakefood。 - miyalys您可以使用deptry来查找过时的依赖项,这是一个命令行实用程序,可检查项目依赖项的各种问题,例如未使用、缺失或传递依赖项。
将其添加到您的项目中:
pip install deptry
然后运行
deptry .
示例输出:
Scanning 2 files...
requirements.txt: DEP002 'pandas' defined as a dependency but not used in the codebase
Found 1 dependency issue.
deptry
的作者。util
和views
的导入却出现了以下依赖错误,这只是误报:deptry . -io util,views
或将配置添加到pyproject.toml
来忽略它们。您能否详细说明它们为什么是误报? util
和views
似乎不是标准库的一部分。 deptry
还应该忽略具有__init__.py
文件的相对导入和本地目录。您是否考虑在GitHub存储库中提出问题?我很乐意根据您的反馈改进deptry
。 - Floriandeptry . --ignore-obsolete "foo,bar"
。 - Florianpip-extra-reqs 您的目录
,它将检查 您的目录
中所有未使用的依赖项。pip install pip-check-reqs
安装它。setup.cfg
文件中读取要求,而该文件仍然是在2020年指定要求的最便携位置(由于缺乏关于 pyproject.toml
格式的共识)。 - sorinsetup.cfg
单独已经要求使用 pyproject.toml
了吧?(https://setuptools.readthedocs.io/en/latest/setuptools.html#setup-cfg-only-projects) - Błażej Michalikpip-missing-reqs my_app_folder_container
。我在一个中等规模的 FastApi 项目中使用这个包,效果非常好。 - Franco Gil
requirement.txt
文件。 - Florian