跳转到主要内容

轻松查看PyPI下载统计。

项目描述

pypinfo: 轻松查看PyPI下载统计。

PyPI version Supported Python versions License Code style: Black

pypinfo是一个简单的CLI,用于通过Google的BigQuery访问PyPI下载统计。

目录

  1. 用法
  2. 安装
  3. 鸣谢

用法

点击展开用法
$ pypinfo
Usage: pypinfo [OPTIONS] [PROJECT] [FIELDS]... COMMAND [ARGS]...
        
    Valid fields are:

    project | version | file | pyversion | percent3 | percent2 | impl | impl-version |
  
    openssl | date | month | year | country | installer | installer-version |
  
    setuptools-version | system | system-release | distro | distro-version | cpu |

    libc | libc-version
    
Options:
    -a, --auth TEXT         Path to Google credentials JSON file.
    --run / --test          --test simply prints the query.
    -j, --json              Print data as JSON, with keys `rows` and `query`.
    -i, --indent INTEGER    JSON indentation level.
    -t, --timeout INTEGER   Milliseconds. Default: 120000 (2 minutes)
    -l, --limit INTEGER        Maximum number of query results. Default: 10
    -d, --days INTEGER         Number of days in the past to include. Default: 30
    -sd, --start-date TEXT  Must be negative or YYYY-MM[-DD]. Default: -31
    -ed, --end-date TEXT    Must be negative or YYYY-MM[-DD]. Default: -1
    -m, --month TEXT        Shortcut for -sd & -ed for a single YYYY-MM month.
    -w, --where TEXT        WHERE conditional. Default: file.project = "project"
    -o, --order TEXT        Field to order by. Default: download_count
    --all                   Show downloads by all installers, not only pip.
    -pc, --percent          Print percentages.
    -md, --markdown         Output as Markdown.
    -v, --verbose           Print debug messages to stderr.
    --version               Show the version and exit.
    -h, --help              Show this message and exit.

pypinfo接受0个或多个选项,后跟恰好1个项目,后跟0个或多个字段。默认情况下,只查询过去最后30天。让我们看看一些示例!

提示:如果查询导致NoneType错误,请增加超时时间。

项目的下载

$ pypinfo requests
Served from cache: False
Data processed: 2.83 GiB
Data billed: 2.83 GiB
Estimated cost: $0.02

| download_count |
| -------------- |
|    116,353,535 |

所有下载

$ pypinfo ""
Served from cache: False
Data processed: 116.15 GiB
Data billed: 116.15 GiB
Estimated cost: $0.57

| download_count |
| -------------- |
|  8,642,447,168 |

按Python版本的项目下载

$ pypinfo django pyversion
Served from cache: False
Data processed: 967.33 MiB
Data billed: 968.00 MiB
Estimated cost: $0.01

| python_version | download_count |
| -------------- | -------------- |
| 3.8            |      1,735,967 |
| 3.6            |      1,654,871 |
| 3.7            |      1,326,423 |
| 2.7            |        876,621 |
| 3.9            |        524,570 |
| 3.5            |        258,609 |
| 3.4            |         12,769 |
| 3.10           |          3,050 |
| 3.3            |            225 |
| 2.6            |            158 |
| Total          |      6,393,263 |

按国家代码的所有下载

$ pypinfo "" country
Served from cache: False
Data processed: 150.40 GiB
Data billed: 150.40 GiB
Estimated cost: $0.74

| country | download_count |
| ------- | -------------- |
| US      |  6,614,473,568 |
| IE      |    336,037,059 |
| IN      |    192,914,402 |
| DE      |    186,968,946 |
| NL      |    182,691,755 |
| None    |    141,753,357 |
| BE      |    111,234,463 |
| GB      |    109,539,219 |
| SG      |    106,375,274 |
| FR      |     86,036,896 |
| Total   |  8,068,024,939 |

按系统和发行版的项目下载

$ pypinfo cryptography system distro
Served from cache: False
Data processed: 2.52 GiB
Data billed: 2.52 GiB
Estimated cost: $0.02

| system_name | distro_name                     | download_count |
| ----------- | ------------------------------- | -------------- |
| Linux       | Ubuntu                          |     19,524,538 |
| Linux       | Debian GNU/Linux                |     11,662,104 |
| Linux       | Alpine Linux                    |      3,105,553 |
| Linux       | Amazon Linux AMI                |      2,427,975 |
| Linux       | Amazon Linux                    |      2,374,869 |
| Linux       | CentOS Linux                    |      1,955,181 |
| Windows     | None                            |      1,522,069 |
| Linux       | CentOS                          |        568,370 |
| Darwin      | macOS                           |        489,859 |
| Linux       | Red Hat Enterprise Linux Server |        296,858 |
| Total       |                                 |     43,927,376 |

过去一年中最受欢迎的项目

$ pypinfo --days 365 "" project
Served from cache: False
Data processed: 1.69 TiB
Data billed: 1.69 TiB
Estimated cost: $8.45

| project         | download_count |
| --------------- | -------------- |
| urllib3         |  1,382,528,406 |
| six             |  1,172,798,441 |
| botocore        |  1,053,169,690 |
| requests        |    995,387,353 |
| setuptools      |    992,794,567 |
| certifi         |    948,518,394 |
| python-dateutil |    934,709,454 |
| idna            |    929,781,443 |
| s3transfer      |    877,565,186 |
| chardet         |    854,744,674 |
| Total           | 10,141,997,608 |

两个YYYY-MM-DD日期之间的下载

$ pypinfo --start-date 2018-04-01 --end-date 2018-04-30 setuptools
Served from cache: False
Data processed: 571.37 MiB
Data billed: 572.00 MiB
Estimated cost: $0.01

| download_count |
| -------------- |
|      8,972,826 |

两个YYYY-MM日期之间的下载

  • yyyy-mm --start-date 默认为该月的第一天
  • yyyy-mm --end-date 默认为该月的最后一天
$ pypinfo --start-date 2018-04 --end-date 2018-04 setuptools
Served from cache: False
Data processed: 571.37 MiB
Data billed: 572.00 MiB
Estimated cost: $0.01

| download_count |
| -------------- |
|      8,972,826 |

单个yyyy-mm月的下载

$ pypinfo --month 2018-04 setuptools
Served from cache: False
Data processed: 571.37 MiB
Data billed: 572.00 MiB
Estimated cost: $0.01

| download_count |
| -------------- |
|      8,972,826 |

过去一年中Python 3下载量前100个项目的百分比

使用--test参数只查看查询,而不是发送它。

$ pypinfo --test --days 365 --limit 100 "" project percent3
SELECT
    file.project as project,
    ROUND(100 * SUM(CASE WHEN REGEXP_EXTRACT(details.python, r"^([^\.]+)") = "3" THEN 1 ELSE 0 END) / COUNT(*), 1) as percent_3,
    COUNT(*) as download_count,
FROM `bigquery-public-data.pypi.file_downloads`
WHERE timestamp BETWEEN TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -366 DAY) AND TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -1 DAY)
    AND details.installer.name = "pip"
GROUP BY
    project
ORDER BY
    download_count DESC
LIMIT 100

特定版本的下载量

pypinfo支持PEP 440版本匹配

我们可以用它来查询特定主要版本的统计数据。

$ pypinfo -pc 'pip==21.*' pyversion version
Served from cache: False
Data processed: 34.45 MiB
Data billed: 35.00 MiB
Estimated cost: $0.01

| python_version | version | percent | download_count |
| -------------- | ------- | ------- | -------------- |
| 3.6            | 21.3.1  |  78.74% |         10,430 |
| 3.8            | 21.3.1  |   7.81% |          1,034 |
| 3.7            | 21.2.1  |   3.59% |            476 |
| 3.7            | 21.3.1  |   2.60% |            345 |
| 3.7            | 21.0.1  |   2.25% |            298 |
| 3.8            | 21.0.1  |   1.58% |            209 |
| 3.8            | 21.2.1  |   1.42% |            188 |
| 3.7            | 21.1.2  |   0.81% |            107 |
| 3.9            | 21.3.1  |   0.69% |             92 |
| 3.8            | 21.1.1  |   0.51% |             67 |
| Total          |         |         |         13,246 |

我们也可以用它来查询精确版本的统计数据

$ pypinfo -pc 'numpy==1.23rc3' pyversion version
Served from cache: False
Data processed: 34.01 MiB
Data billed: 35.00 MiB
Estimated cost: $0.01

| python_version | version   | percent | download_count |
| -------------- | --------- | ------- | -------------- |
| 3.9            | 1.23.0rc3 |  63.33% |             38 |
| 3.8            | 1.23.0rc3 |  28.33% |             17 |
| 3.10           | 1.23.0rc3 |   8.33% |              5 |
| Total          |           |         |             60 |

检查来自持续集成服务器的下载量

❯ pypinfo --percent --days 5 pillow ci
Served from cache: False
Data processed: 384.22 MiB
Data billed: 385.00 MiB
Estimated cost: $0.01

| ci    | percent | download_count |
| ----- | ------- | -------------- |
| None  |  79.37% |     11,963,127 |
| True  |  20.63% |      3,109,931 |
| Total |         |     15,073,058 |

安装

点击展开安装

pypinfo作为通用wheel分发在PyPI上,支持Linux/macOS和Windows,并支持Python 3.7+。

这相对简单,我发誓。

创建项目

  1. 访问https://bigquery.cloud.google.com

  2. 如果您还没有,请注册。每月查询的前1TB数据是免费的。额外的每TB是5美元。

  3. 如果您还没有登录,请登录您的账户;

  4. 如果您还没有,请访问https://console.developers.google.com/cloud-resource-manager并点击“创建项目”

create

  1. 这会带您到https://console.developers.google.com/projectcreate。填写表格并点击“创建”。任何名字都可以,但建议您选择与PyPI相关的名字,比如pypinfo。这样您就知道这个项目是用来做什么的

click

  1. 创建一段时间后,在左上角,从下拉组件中选择您选择的的项目名称,并在左上角的“导航菜单”中选择选项“云概述 > 仪表板”

show

启用BigQuery API

  1. 点击左上角的“导航菜单”并点击“API和服务 > 库”选项

api_library

  1. 在可用文本字段中用关键词“big query api”进行搜索

big_query_api_search

  1. 通过点击“启用”按钮启用Big Query API

big_query_api

  1. 启用后,点击“创建凭据”

credentials

注意:您将被要求返回到Big Query面板。在这种情况下,点击左上角的“导航菜单”,选项“API和服务 > 已启用的API和服务”,然后在随后的页面上,在“Big Query API”项上

enabled_credentials

  1. 在点击“创建凭据”按钮后的页面上,选择“BigQuery API”、“应用程序数据”和“不,我没有使用它们”

credentials_page_1

  1. 填写账户详情并点击“创建并继续”按钮

credentials_page_2

  1. 选择角色“BigQuery用户”(路径“BigQuery > Big Query用户”),点击“完成”按钮

credentials_page_3

  1. 在Big Query API面板(参见10项上的注意),点击“凭据”选项卡。在“服务账户”部分,点击第11、12和13项上创建的凭据。

create_service_credential_key

  1. 在凭据点击的页面上,点击“密钥”选项卡。在下拉菜单“添加密钥”中,点击“创建新密钥”选项

create_credential_key

  1. 在出现的框中,点击“JSON”选项并点击“创建”:这将开始以{name}-{credentials_hash}.json模式命名的凭据JSON文件的下载

create_private_key

安装和认证

  1. 在终端中运行python -m pip install pypinfo
  2. pypinfo --auth path/to/your_credentials.json,或设置环境变量GOOGLE_APPLICATION_CREDENTIALS,使其指向该文件。

鸣谢

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分布

pypinfo-22.0.0.tar.gz (21.2 kB 查看哈希值)

上传时间

构建分布

pypinfo-22.0.0-py3-none-any.whl (16.0 kB 查看哈希值)

上传时间 Python 3

支持者