Como posso pesquisar "pip" por todos os termos de pesquisa fornecidos?

2

Existe uma maneira de fazer um AND em termos de pesquisa em uma pesquisa por pipagem?

Por exemplo, fazendo:

pip search django toolbar

parece mostrar todos os pacotes relacionados ao django, mesmo que eles não tenham nada a ver com a barra de ferramentas.

O melhor que posso fazer é contornar:

pip search django toolbar | grep toolbar | grep django

ATUALIZAÇÃO:

isso é melhor:

pip search toolbar | grep django

e torna minha pergunta inútil

    

1 resposta

2

Em suma, você não pode.

Após a instalação de pip , dei uma olhada em site-packages/pip-1.2.1-py2.6.egg/pip/commands/search.py , que é onde o comando search é implementado.

Ele usa a interface XML-RPC para o PyPi, que está documentado no link
Podemos ver que a pegada para a pesquisa é search(spec[, operator]) . As notas da documentação:

Arguments for different fields are combined using either "and" (the default) or "or". Example: search({'name': 'foo', 'description': 'bar'}, 'or'). The results are returned as a list of dicts {'name': package name, 'version': package release version, 'summary': package release summary}

Impressionante! Então é aqui que definimos o operador de busca! E and é mesmo o padrão!

Agora voltemos a 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

E aqui vemos que 'or' é codificado.

    
por 20.11.2012 / 20:00

Tags