标题基本上都说明了一切。如何告诉pip freeze
忽略某些软件包,例如pylint
和pep8
及其依赖项?
答案 0 :(得分:5)
可用的选项很少
根本不关心pip
输出中存在的这些包。
通过某个grep
过滤器过滤输出,并将结果清理干净。
请注意,virtualenv中的pip冻结不会报告全局安装的软件包(但它通常会为我报告argparse
和wsgiref
- 似乎没有什么是完美的。)
pipwarm
命令会调用pip冻结并根据需要修改输出(删除不需要的文件)。
我知道,我可能没有给你你要求的答案,但也许virtualenv接近你所需要的,因为它允许这些包的全球存在并且仍然允许在pip冻结的输出中没有这些包
pep8
和pylint
作为脚本,但远离pip可见性如果您只关心pylint
和pep8
可用作命令行工具,但不要求它们对pip freeze
可见,则有多个选项
pep8
和pylint
安装到virtualenv并将脚本复制到/usr/bin
如果您将pylint
和pep8
安装到单独的virtualenv中,请按which pep8
和which pylint
查找可执行文件的位置,并将这些文件复制到可见的位置,例如到/usr/bin
。您从virtualenv复制或移动的脚本在virtualenv中具有硬编码路径到所需的python包,并且即使在复制时也会安全运行(只是脚本,不要触及其他相关的virtualenv)。请注意,没有必要激活给定的virutalenv来使其正常工作。
pep8
和pylint
但在virtualenv中继续开发系统范围内安装的命令行工具通常安装在位置,这使它们全局可见。同时,在virtualenv中调用pip freeze
时,系统范围内安装的软件包不会被看到。
答案 1 :(得分:5)
我的方法如下:
.bashrc
我创建了以下别名:alias pipfreezeignore='pip freeze | grep -vFxf ignore_requirements.txt'
pip install jedi flake8 importmagic autopep8 yapf
)。ignore_requirements.txt
文件中,如pip freeze > ignore_requirements.txt
。pip install django
)pipfreezeignore > requirements.txt
(在ignore_requirements.txt
所在的同一文件夹中),以便我requirements.txt
了解ignore_requirements.txt
如果您始终要忽略相同的软件包(通过所有虚拟环境),则可以在alias pipfreezeignore='pip freeze | grep -vFxf /abs/path/to/ignore_requirements.txt'
中重新定义别名
只需确保您的项目实际上不需要ignore_requirements.txt
的任何包。
答案 2 :(得分:1)
:
$exclude = 'pylint', 'pep8'
pip freeze |
Where-Object { $exclude -notcontains $_ } |
ForEach-Object { pip install --upgrade $_ }