有没有办法在 pip 搜索中对搜索词进行 AND 运算?
例如,这样做:
pip search django toolbar
似乎显示所有与 django 相关的包,即使它们与工具栏无关。
我能做的最好的事情就是解决以下问题:
pip search django toolbar | grep toolbar | grep django
更新:
这个更好:
pip search toolbar | grep django
让我的问题变得毫无意义
答案1
简而言之,你不能。
安装后pip
,我看了一下site-packages/pip-1.2.1-py2.6.egg/pip/commands/search.py
,这是search
命令已实现。
它使用 PyPi 的 XML-RPC 接口,该接口的文档位于http://wiki.python.org/moin/PyPiXmlRpc
我们可以看到搜索的足迹是search(spec[, operator])
。文档说明:
不同字段的参数使用“and”(默认)或“or”组合。示例:search({'name': 'foo', 'description': 'bar'}, 'or')。结果以字典列表的形式返回:{'name': 软件包名称,'version': 软件包发布版本,'summary': 软件包发布摘要}
太棒了!这就是我们定义搜索运算符的地方!and
甚至是默认的!
现在回到search.py
...
def search(self, query, index_url):
pypi = xmlrpclib.ServerProxy(index_url, pip.download.xmlrpclib_transport)
hits = pypi.search({'name': query, 'summary': query}, 'or')
return hits
这里我们看到了'or'
硬编码。