从PKG-INFO (Python pkg_resources)获取Distribution/module元数据的解析条



我目前使用的代码类似于以下

# Returns PKG-INFO in "email format", meaning it looks a little like this:
#   Name: some_python_module
#   Version: 1.2.3
dist = pkg_resources.get_distribution('some_python_module')
pkginfo = dist.get_metadata(dist.PKG_INFO)
d = dict(line.split(': ', 1) for line in pkginfo.split('n') if ': ' in line)
print(d['Name'])

我想知道是否有一个"清洁"如何为一个分布对象做这个键查找?

注意,我在这里使用自定义属性,所以在我的特殊情况下,dist.project_namedist.version是不够的。

_parsed_pkg_infoinDistInfoDistribution被盗:

dist = pkg_resources.get_distribution('some_python_module')
pkginfo = dist.get_metadata(dist.PKG_INFO)
parsed = email.parser.Parser().parsestr(pkginfo)
print(parsed['Name'])

不知道为什么这个方法不在Distribution中,因为它似乎适用于DistInfoDistributionEggInfoDistribution——这就是dist.PKG_INFO的作用,顺便说一下,这个变量在这两个之间不同(.dist-info'METADATA'.egg-info'PKG-INFO')。

小注意:parsestr返回一个FeedParser对象,当您调用print时,该对象输出解析的输入提要—不要对此感到困惑,它不是str。还要注意,RFC不允许在键名中使用空格,这会导致无声解析器错误!

最新更新