首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得Python发行版URL?

如何获得Python发行版URL?
EN

Stack Overflow用户
提问于 2016-07-29 12:52:43
回答 3查看 475关注 0票数 4

在他们的setup.py包中提供了一些信息。然后,可以在鸡蛋的PKG_INFO文件中找到这些信息。

一旦我安装了软件包,我如何访问它们?

例如,如果我有以下模块:

代码语言:javascript
复制
setup(name='myproject',
      version='1.2.0.dev0',
      description='Demo of a setup.py file.',
      long_description=README + "\n\n" + CHANGELOG + "\n\n" + CONTRIBUTORS,
      license='Apache License (2.0)',
      classifiers=[
          "Programming Language :: Python",
          "Programming Language :: Python :: 2",
          "Programming Language :: Python :: 2.7",
          "Programming Language :: Python :: 3",
          "Programming Language :: Python :: 3.4",
          "Programming Language :: Python :: 3.5",
          "Programming Language :: Python :: Implementation :: CPython",
          "Programming Language :: Python :: Implementation :: PyPy",
          "Topic :: Internet :: WWW/HTTP",
          "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
          "License :: OSI Approved :: Apache Software License"
      ],
      keywords="web sync json storage services",
      url='https://github.com/Kinto/kinto')

如何使用Python返回setup.py中提供的信息?

我在想一些类似的事情:

代码语言:javascript
复制
import pkg_resource
url = pkg_resource.get_distribution(__package__).url

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-29 13:02:09

很明显,有一个私有API可以让您使用pkg_resources执行此操作。

代码语言:javascript
复制
import pkg_resources
d = pkg_resources.get_distribution(__package__)
metadata = d._get_metadata(d.PKG_INFO)
home_page = [m for m in metadata if m.startswith('Home-page:')]
url = home_page[0].split(':', 1)[1].strip()

我希望我们能做得更好。

票数 2
EN

Stack Overflow用户

发布于 2017-11-20 11:44:13

我希望我们能做得更好。

事实上我们可以。没有必要使用私有方法,我们可以这样做:

代码语言:javascript
复制
import pkg_resources
import distutils
import io

distribution = pkg_resources.get_distribution(__package__)
metadata_str = distribution.get_metadata(distribution.PKG_INFO)
metadata_obj = distutils.dist.DistributionMetadata()
metadata_obj.read_pkg_file(io.StringIO(metadata_str))
url = metadata_obj.url
票数 1
EN

Stack Overflow用户

发布于 2021-04-29 15:54:58

从python3.8开始,您可以使用importlib.metadata提取包的元数据。

例如,提取urllib3的元数据

代码语言:javascript
复制
>>> from importlib import metadata
>>> import urllib3
>>> list(metadata.metadata('urllib3'))
['Metadata-Version', 'Name', 'Version', 'Summary', 'Home-page', 'Author', 'Author-email', 'License', 'Project-URL', 'Project-URL', 'Project-URL', 'Description', 'Keywords', 'Platform', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Requires-Python', 'Provides-Extra', 'Provides-Extra', 'Provides-Extra']
>>> metadata.metadata('urllib3')['Version']
'1.25.8'
>>> metadata.metadata('urllib3')['Project-URL']
'Documentation, https://urllib3.readthedocs.io/'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38659408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档