如果我已经构建了一个python包distutils.core,例如via
setup(
ext_package="foo",
author="me",
version="1.0",
description="foo package",
packages=["foo",],
)
Run Code Online (Sandbox Code Playgroud)
所有元数据在哪里(它的目的是什么?)以及如何从python中访问它.具体来说,如何在执行类似操作后从python控制台访问作者信息
>>> import foo
Run Code Online (Sandbox Code Playgroud)
随着 python3.8 的发布,您可能希望使用新的[1]模块来解析任何已安装包的元数据。importlib.metadata
获取作者信息如下所示:
>>> from importlib import metadata
>>> metadata.metadata('foo')['Author'] # let's say you called your package 'foo'
'Arne'
Run Code Online (Sandbox Code Playgroud)
并获取安装版本:
>>> from importlib import metadata
>>> metadata.version('foo')
'0.1.0'
Run Code Online (Sandbox Code Playgroud)
这比您之前必须做的要直接得多。
[1]也可作为 Python2.7 和 3.5+ 的反向移植作为importlib-metadata,感谢@ChrisHunt 指出这一点。
访问元数据的一种方法是使用pip:
import pip
package = [pckg for pckg in pip.get_installed_distributions()
if pckg.project_name == 'package_name'][0]
# package var will contain some metadata: version, project_name and others.
Run Code Online (Sandbox Code Playgroud)
要么 pkg_resources
from pkg_resources import get_distribution
pkg = get_distribution('package_name') # also contains a metadata
Run Code Online (Sandbox Code Playgroud)