iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何使用resuests访问Python包索引的JSON API
  • 299
分享到

如何使用resuests访问Python包索引的JSON API

2023-06-15 13:06:21 299人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容介绍了“如何使用resuests访问python包索引的JSON api”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PyPI 的

本篇内容介绍了“如何使用resuests访问python索引JSON api”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

PyPI 的 jsON API 是一种机器可直接使用的数据源,你可以访问和你浏览网站时相同类型的数据。

PyPI(Python 软件包索引)提供了有关其软件包信息的 JSON API。本质上,它是机器可以直接使用的数据源,与你在网站上直接访问是一样的的。例如,作为人类,我可以在浏览器中打开 Numpy 项目页面,点击左侧相关链接,查看有哪些版本,哪些文件可用以及发行日期和支持的 Python 版本等内容:

如何使用resuests访问Python包索引的JSON API

NumPy project page

但是,如果我想编写一个程序来访问此数据,则可以使用 JSON API,而不必在这些页面上抓取和解析 html

顺便说一句:在旧的 PyPI 网站上,还托管在 pypi.python.org 时,NumPy 的项目页面位于 pypi.python.org/pypi/numpy,访问其 JSON API 也很简单,只需要在最后面添加一个 /json ,即 https://pypi.org/pypi/numpy/json。现在,PyPI 网站托管在 pypi.org,NumPy 的项目页面是 pypi.org/project/numpy。新站点不会有单独的 JSON API URL,但它仍像以前一样工作。因此,你不必在 URL 后添加 /json,只要记住 URL 就够了。

你可以在浏览器中打开 NumPy 的 JSON API URL,Firefox 很好地渲染了数据:

如何使用resuests访问Python包索引的JSON API

JSON rendered in Firefox

你可以查看 inforelease 和 urls 其中的内容。或者,你可以将其加载到 Python shell 中,以下是几行入门教程

import requestsurl = "Https://pypi.org/pypi/numpy/json"r = requests.get(url)data = r.json()

获得数据后(调用 .json() 提供了该数据的 字典),你可以对其进行查看:

如何使用resuests访问Python包索引的JSON API

Inspecting data

查看 release 中的键:

如何使用resuests访问Python包索引的JSON API

Inspecting keys in releases

这表明 release 是一个以版本号为键的字典。选择一个并查看以下内容:

如何使用resuests访问Python包索引的JSON API

Inspecting version

每个版本都包含一个列表,release 包含 24 项。但是每个项目是什么?由于它是一个列表,因此你可以索引第一项并进行查看:

如何使用resuests访问Python包索引的JSON API

Indexing an item

这是一个字典,其中包含有关特定文件的详细信息。因此,列表中的 24 个项目中的每一个都与此特定版本号关联的文件相关,即在 https://pypi.org/project/numpy/1.20.1/#files 列出的 24 个文件。

你可以编写一个脚本在可用数据中查找内容。例如,以下的循环查找带有 sdist(源代码包)的版本,它们指定了 requires_python 属性并进行打印:

for version, files in data['releases'].items():    for f in files:        if f.get('packagetype') == 'sdist' and f.get('requires_python'):            print(version, f['requires_python'])

如何使用resuests访问Python包索引的JSON API

sdist files with requires_python attribute

piwheels

去年,我在 piwheels 网站上实现了类似的 API。piwheels.org 是一个 Python 软件包索引,为树莓派架构提供了 wheel(预编译的二进制软件包)。它本质上是 PyPI 软件包的镜像,但带有 Arm wheel,而不是软件包维护者上传到 PyPI 的文件。

由于 piwheels 模仿了 PyPI 的 URL 结构,因此你可以将项目页面 URL 的 pypi.org 部分更改为 piwheels.org。它将向你显示类似的项目页面,其中详细说明了构建的版本和可用的文件。由于我喜欢旧站点允许你在 URL 末尾添加 /json 的方式,所以我也支持这种方式。NumPy 在 PyPI 上的项目页面为 pypi.org/project/numpy,在 piwheels 上,它是 piwheels.org/project/numpy,而 JSON API 是 piwheels.org/project/numpy/json 页面。

没有必要重复 PyPI API 的内容,所以我们提供了 piwheels 上可用内容的信息,包括所有已知发行版的列表,一些基本信息以及我们拥有的文件列表:

如何使用resuests访问Python包索引的JSON API

JSON files available in piwheels

与之前的 PyPI 例子类似,你可以创建一个脚本来分析 API 内容。例如,对于每个 NumPy 版本,其中有多少 piwheels 文件:

import requests url = "https://www.piwheels.org/project/numpy/json"package = requests.get(url).json() for version, info in package['releases'].items():    if info['files']:        print('{}: {} files'.fORMat(version, len(info['files'])))    else:        print('{}: No files'.format(version))

此外,每个文件都包含一些元数据:

如何使用resuests访问Python包索引的JSON API

Metadata in JSON files in piwheels

方便的是 apt_dependencies 字段,它列出了使用该库所需的 Apt 软件包。本例中的 NumPy 文件,或者通过 pip 安装 Numpy,你还需要使用 Debian 的 apt 包管理器安装 libatlas3-base 和 libgfortran

以下是一个示例脚本,显示了程序包的 Apt 依赖关系:

import requests def get_install(package, abi):    url = 'https://piwheels.org/project/{}/json'.format(package)    r = requests.get(url)    data = r.json()    for version, release in sorted(data['releases'].items(), reverse=True):        for filename, file in release['files'].items():            if abi in filename:                deps = ' '.join(file['apt_dependencies'])                print("sudo apt install {}".format(deps))                print("sudo pip3 install {}=={}".format(package, version))                return get_install('OpenCV-python', 'cp37m')get_install('opencv-python', 'cp35m')get_install('opencv-python-headless', 'cp37m')get_install('opencv-python-headless', 'cp35m')

我们还为软件包列表提供了一个通用的 API 入口,其中包括每个软件包的下载统计:

import requests  url = "https://www.piwheels.org/packages.json" packages = requests.get(url).json() packages = {     pkg: (d_month, d_all)     for pkg, d_month, d_all, *_ in packages }  package = 'numpy' d_month, d_all = packages[package]  print(package, "has had", d_month, "downloads in the last month") print(package, "has had", d_all, "downloads in total")

pip search 因为其 XMLrpc 接口过载而被禁用,因此人们一直在寻找替代方法。你可以使用 piwheels 的 JSON API 来搜索软件包名称,因为软件包的集合是相同的:

#!/usr/bin/python3import sys import requests PIWHEELS_URL = 'https://www.piwheels.org/packages.json' r = requests.get(PIWHEELS_URL)packages = {p[0] for p in r.json()} def search(term):    for pkg in packages:        if term in pkg:            yield pkg if __name__ == '__main__':    if len(sys.argv) == 2:        results = search(sys.argv[1].lower())        for res in results:            print(res)    else:        print("Usage: pip_search TERM")

有关更多信息,参考 piwheels 的 JSON API 文档.

“如何使用resuests访问Python包索引的JSON API”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 如何使用resuests访问Python包索引的JSON API

本文链接: https://www.lsjlt.com/news/280339.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用resuests访问Python包索引的JSON API
    本篇内容介绍了“如何使用resuests访问Python包索引的JSON API”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PyPI 的 ...
    99+
    2023-06-15
  • python如何使用反向索引访问序列中的元素
    小编给大家分享一下python如何使用反向索引访问序列中的元素,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用反向索引访问序列中的元素如果想在序列的末尾访问一些元素,那么反向计数要容易得多。在Python序列中,最后一个...
    99+
    2023-06-27
  • Python如何使用Kubernetes API访问集群
    这篇文章主要介绍了Python如何使用Kubernetes API访问集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。通过将身份认证令牌直接传给 API 服务器,可以避免使...
    99+
    2023-06-15
  • 如何使用Python API访问Apache存储?
    Apache存储是一个非常流行的分布式存储系统,它提供了高可靠性、高可扩展性、高性能和高可用性的解决方案。Python作为一种流行的编程语言,有很多第三方库可以用来访问Apache存储,例如HBase、Cassandra和Hive等。本文...
    99+
    2023-07-18
    api apache 存储
  • Python如何在Unix容器中访问索引?
    在Unix容器中,访问索引是一项非常重要的任务。索引是用于快速查找数据的数据结构,它可以帮助我们更快地找到我们需要的数据。Python作为一种流行的编程语言,提供了许多工具和库来帮助我们访问索引。在本文中,我们将探讨Python如何在Un...
    99+
    2023-09-20
    unix 容器 索引
  • 什么是Linux容器索引,如何使用Python进行访问?
    Linux容器索引是一种用于存储、分享和分发容器镜像的公共仓库,类似于Docker Hub。它允许用户上传、下载和共享容器镜像,同时提供了一些有用的功能,如镜像版本控制、镜像标签、镜像自动构建等。在本文中,我们将介绍如何使用Python访问...
    99+
    2023-11-04
    容器 linux 索引
  • PHP如何使用NumPy索引快速访问数组?
    NumPy是Python中用于科学计算和数据分析的重要库,其中最强大的特性之一是NumPy数组的索引。NumPy数组的索引是一种非常快速和高效的方法,用于访问和修改数组的元素。在本文中,我们将介绍如何使用PHP实现NumPy数组的索引。 ...
    99+
    2023-09-04
    打包 numpy 索引
  • PHP 如何使用 Elasticsearch 的 索引 API 接口
    目录 一、实战场景 二、知识点 PHP Elasticsearch 索引 index MySQL 三、菜鸟实战 一、实战场景 如何在 PHP 中使用 Elasticsearch 的索引 API 接口 二、知识点 PHP Elas...
    99+
    2023-08-31
    elasticsearch 大数据
  • 如何在 Java 中使用索引函数 API?
    索引函数 API 是 Java 编程语言中的一个重要组成部分,它提供了一些非常有用的方法和函数,帮助我们在 Java 应用程序中有效地处理索引和数据。在本文中,我们将介绍如何在 Java 中使用索引函数 API,以及如何使用它来处理索引和...
    99+
    2023-09-02
    索引 函数 api
  • Python 索引:如何使用实时打包优化搜索性能?
    Python 是一种高级编程语言,广泛用于数据分析、机器学习、人工智能等领域。在这些应用场景中,数据的搜索和查询是非常常见的操作。对于大规模的数据集合,搜索和查询的效率是一个非常重要的问题。在这篇文章中,我们将介绍 Python 中的索引...
    99+
    2023-10-29
    索引 实时 打包
  • python如何使用负索引
    这篇文章主要介绍python如何使用负索引,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!负索引人们喜欢使用序列,因为当我们知道元素的顺序,我们就可以按顺序操作这些元素。在Python中,字符串、元组和列表是最常见的序...
    99+
    2023-06-27
  • PHP与NumPy:如何打包索引以提高数组访问速度?
    随着数据量的增加,数组的访问速度成为了很多程序员关注的焦点。在PHP和Python中,数组的访问是一个非常重要的操作,因此提高数组的访问速度对程序的性能优化有着至关重要的作用。在本文中,我们将探讨如何使用打包索引来提高数组的访问速度,并且...
    99+
    2023-09-04
    打包 numpy 索引
  • python如何使用负数索引
    小编给大家分享一下python如何使用负数索引,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!负数索引>>> a = [0, 1,&...
    99+
    2024-04-02
  • 如何使用 ASP 和 Bash 实现高效的索引 API?
    在现代的Web应用程序开发中,数据的高效检索是非常关键的。而实现高效的索引API是实现这个目标的关键之一。本文将介绍如何使用ASP.NET和Bash实现高效的索引API。 ASP.NET是一种基于.NET框架的Web应用程序开发框架。它提供...
    99+
    2023-10-22
    bash 索引 api
  • 如何使用 ASP 缓存 实时 索引来加速网站访问?
    ASP 缓存是一种在 ASP 中用于加速网站访问的技术。当用户访问网站时,ASP 缓存可以将相关的数据缓存起来,以便下次访问时可以更快地提供数据。在本文中,我们将介绍如何使用 ASP 缓存实时索引来加速网站访问。 ASP 缓存的基本原理是将...
    99+
    2023-07-03
    缓存 实时 索引
  • 如何使用API索引提高Java开发技能?
    Java是一种非常流行的编程语言,许多开发人员都在使用它来构建各种应用程序和系统。使用API索引是提高Java开发技能的一种重要方法。API索引是一个集合,其中包含了许多有用的类和方法,可以帮助Java开发人员更快地编写代码,减少错误和繁琐...
    99+
    2023-08-10
    开发技术 api 索引
  • Python中如何使用同步打包API?
    Python是一门广受欢迎的编程语言,其强大的工具库让开发人员能够轻松实现各种功能。在Python中,同步打包API是一个非常有用的工具,它可以帮助我们在处理数据时更加方便和高效。本文将介绍Python中如何使用同步打包API,并演示一些代...
    99+
    2023-09-18
    同步 打包 api
  • 如何在PHP中优化NumPy数组的索引访问?
    在PHP中优化NumPy数组的索引访问是一项重要的任务,因为它可以显著提高程序的性能。在本文中,我们将探讨如何使用PHP中的一些技术来优化NumPy数组的索引访问。 1.使用NumPy的ndarray对象 NumPy的ndarray对象是一...
    99+
    2023-09-04
    打包 numpy 索引
  • 如何使用 Python API 来优化您的 NPM 包?
    Python 是一种流行的编程语言,可用于优化 NPM 包。Python 有许多强大的 API,可以帮助您编写高效的代码和算法。在本文中,我们将探讨如何使用 Python API 来优化您的 NPM 包。 一、安装和配置 Python 在开...
    99+
    2023-06-26
    api unix npm
  • 如何使用GO编写一个能够访问Apache索引接口的程序?
    在现代互联网应用程序中,访问API接口是一个非常常见的需求。在本文中,我们将讨论如何使用Go编写一个程序,该程序可以访问Apache索引接口。 Apache索引接口是一个提供有关服务器上文件的信息的API。通过使用此API,可以获取有关服务...
    99+
    2023-10-19
    apache 索引 接口
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作