当前位置: 首页 > 知识库问答 >
问题:

如何使用pip进行搜索?

微生令雪
2023-03-14

是的,我对这个问题非常认真。使用pip搜索是如何工作的?

关键字搜索的文档引用了https://pip.pypa.io/en/stable/user_guide/#searching-对于软件包,除了参考以外,什么都可以。

我无法从搜索尝试中得出搜索是如何工作的结论。E、 g.如果我搜索“exec”,我会得到各种结果,例如exec pypeline(0.4.2)-一个难以置信的python包。我甚至得到与“exec”无关的包名的结果,只要描述中有“exec”一词。

但奇怪的是,我在列表中没有看到我自己的包,尽管其中一个包的名称中包含exec。仅此一点就可以让我们得出这样的结论:pip(至少)在包描述中搜索完整的搜索词(我的包中没有)。

但是基于这个假设,如果我搜索包描述中提供的其他术语,我也不会列出我的包。这也适用于其他软件包:例如。如果我搜索“项目”,我在结果集中不会得到flask-宏,尽管术语“项目”显然存在于flask-宏的描述中。因此,由于这与上述假设相矛盾,这显然不是搜索的工作方式。

有趣的是,我可以搜索“macro”并得到“flask macros”,但如果搜索“macr”,则找不到“flask macros”。

那么pip到底是如何执行搜索的呢?在哪里可以找到合适的参考?


共有1个答案

袁建木
2023-03-14

pip搜索查找分发名称或分发摘要中包含的子字符串。我在任何地方都看不到这篇文档,直接按照源代码中的命令找到它。

2010年2月发布的搜索功能代码仍在使用旧的xmlrpc\u客户端。由于XML-RPC API现在被认为是遗留的,不应该使用,因此有1995个问题可以改变这一点,自2011年起开放。有点令人惊讶的是,在pypi遗留到仓库的移动中,endpoint并没有被弃用,因为遗留路由仍然存在。

flask-宏没有出现在“项目”的搜索中,因为这是一个太常见的搜索词。只返回100个结果,这是处理对这些PyPI搜索路由的请求的elasticsearch视图中的硬编码限制。请注意,这是最近在PR3827中从1000减少的。

直接使用API客户端执行搜索的代码:

import xmlrpc.client

client = xmlrpc.client.ServerProxy('https://pypi.org/pypi')
query = 'project'
results = client.search({'name': query, 'summary': query}, 'or')
print(len(results), 'results returned')
for result in sorted(results, key=lambda data: data['name'].lower()):
    print(result)

编辑:此处记录了100个结果限制。

 类似资料:
  • 问题内容: 我正在使用Hibernate 4和Lucene 3.6。我对构面计数有要求。根据我的要求,我有一个实体“产品”。实体“产品”具有某些属性,例如ID,颜色,品牌。 现在,我的要求是,我想以多维方式获取该实体的商品数,并获取红色(彩色)耐克(品牌)服装的数量。 所以举个例子。我的数据库中保存了以下产品实体。 id品牌颜色 1锐步红 2锐步黑 3锐步绿 4利红 5利黑 6利黑 现在,我希望我

  • 在这里,我可以搜索python。 我希望放置负模式,实际上应该不会产生任何结果或不匹配。 当字符串包含python但字符串“在python上工作很容易”中不包含容易时,我喜欢使用re.search。我该怎么做?同时使用正负条件。

  • 我目前正在研究如何在我的项目中实现搜索。我有一个名为users的表,它有两列,firstName和lastName。我希望能够在这两列之间搜索,例如,用户的名字是John,姓是Smith,因此当他们搜索John Smith时,它将返回具有该名称的用户。 或者他们可以只搜索名字等。解决这个问题的方法是什么? 使用PostgreSQL的全文功能是正确的途径吗?我目前正在使用Node w/TypeORM

  • 我想查询多个集合的搜索,而不仅仅是品牌。我直接从云firestore查询 到目前为止,我成功地查询了这个品牌。 我试图将也与类别和描述结合起来,但总是失败 我在firestore的交换集合中的字段是 品牌 类别 城市 使用类别,我尝试这样做 干杯 扎伊德

  • 用git grep 命令查找Git库里面的某段文字是很方便的. 当然, 你也可以用unix下的'grep'命令进行搜索, 但是'git grep'命令能让你不用签出(checkout)历史文件, 就能查找它们. 例如, 你要看 git.git 这个仓库里每个使用'xmmap'函数的地方, 你可以运行下面的命令: $ git grep xmmap config.c: co

  • 问题内容: 我想知道如何创建 Firebase匹配Regsexex查询 并使用 shouldChangeTextInRange 列出当前结果 。 我之前在Parse中做到了,它用于在Parse Cloud中搜索用户名或用户全名。如果有人阐明了我在Firebase中执行此操作的方法,那将是很棒的。 更新1: 我不能使用相同的父名称来完成它,snap.value并没有给我响应,甚至没有编译。因此,我尝