Jos*_*osh 11 python pypi python-2.7 python-3.x
是否有任何方法可以自动查找PIP上的软件包支持哪些Python版本?
我正在寻找能够生成下表的表格,如下所示,从PIP索引中自动获取.来自着名的GitHub存储库和社区贡献者的手动表格也很有用:
2.7.x 3.x
foo ? ?
bar ? ?
baz ? ?
Run Code Online (Sandbox Code Playgroud)
以前有人编过这样的表吗?有关如何自动获取此信息的任何想法?
不幸的是 PyPI API 似乎很糟糕。您可以通过 XMLRPC 与它交互,但返回值的记录很少(py_version例如,可以为空白或“源”,无论这意味着什么)。也许最准确的做法是下载每个包并使用启发式方法,但除此之外,标签系统似乎是最好的选择。API 不支持它,但您可以轻松地将其从网页中抓取出来:
def package_supports_py3(pkg):
b = bs4.BeautifulSoup(requests.get('https://pypi.python.org/pypi/' + pkg).text)
return 'Programming Language :: Python :: 3' in map(lambda li: li.find('a').text, b.find('strong', text = 'Categories').next_sibling.next_sibling.find_all('li'))
>>> package_supports_py3('virtualenv')
True
>>> package_supports_py3('oh-my-vim')
False # but it doesn't have /any/ python version related tags, so who knows...
Run Code Online (Sandbox Code Playgroud)
(需要BeautifulSoup4和requests)
此方法不会产生误报,但很可能会丢失实际升级到 py3 的软件包。如果您需要它是可靠的,我建议结合使用检查python_version、此方法和手动覆盖。如果您只是闲逛,这种方法应该足够好,因为大多数较大的、运行良好的项目似乎都遵守标记指南。
| 归档时间: |
|
| 查看次数: |
635 次 |
| 最近记录: |