轻松查看PyPI下载统计。
项目描述
pypinfo: 轻松查看PyPI下载统计。
pypinfo是一个简单的CLI,用于通过Google的BigQuery访问PyPI下载统计。
目录
用法
点击展开用法
$ 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+。
这相对简单,我发誓。
创建项目
-
如果您还没有,请注册。每月查询的前1TB数据是免费的。额外的每TB是5美元。
-
如果您还没有登录,请登录您的账户;
-
如果您还没有,请访问https://console.developers.google.com/cloud-resource-manager并点击“创建项目”
- 这会带您到https://console.developers.google.com/projectcreate。填写表格并点击“创建”。任何名字都可以,但建议您选择与PyPI相关的名字,比如pypinfo。这样您就知道这个项目是用来做什么的
- 创建一段时间后,在左上角,从下拉组件中选择您选择的的项目名称,并在左上角的“导航菜单”中选择选项“云概述 > 仪表板”
启用BigQuery API
- 点击左上角的“导航菜单”并点击“API和服务 > 库”选项
- 在可用文本字段中用关键词“big query api”进行搜索
- 通过点击“启用”按钮启用Big Query API
- 启用后,点击“创建凭据”
注意:您将被要求返回到Big Query面板。在这种情况下,点击左上角的“导航菜单”,选项“API和服务 > 已启用的API和服务”,然后在随后的页面上,在“Big Query API”项上
- 在点击“创建凭据”按钮后的页面上,选择“BigQuery API”、“应用程序数据”和“不,我没有使用它们”
- 填写账户详情并点击“创建并继续”按钮
- 选择角色“BigQuery用户”(路径“BigQuery > Big Query用户”),点击“完成”按钮
- 在Big Query API面板(参见10项上的注意),点击“凭据”选项卡。在“服务账户”部分,点击第11、12和13项上创建的凭据。
- 在凭据点击的页面上,点击“密钥”选项卡。在下拉菜单“添加密钥”中,点击“创建新密钥”选项
- 在出现的框中,点击“JSON”选项并点击“创建”:这将开始以
{name}-{credentials_hash}.json
模式命名的凭据JSON文件的下载
安装和认证
- 在终端中运行
python -m pip install pypinfo
。 pypinfo --auth path/to/your_credentials.json
,或设置环境变量GOOGLE_APPLICATION_CREDENTIALS
,使其指向该文件。
鸣谢
- 感谢Donald Stufft多年来维护PyPI;
- 感谢Google向PyPI捐赠BigQuery容量;
- 感谢Paul Kehrer的精彩的博客文章。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源分布
pypinfo-22.0.0.tar.gz (21.2 kB 查看哈希值)
构建分布
pypinfo-22.0.0-py3-none-any.whl (16.0 kB 查看哈希值)
关闭
pypinfo-22.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4bc900c96b8827d22a674eee6a34c549939452a4174ee17fd3eafcaff594c408 |
|
MD5 | af496e9747353961e7a4b2de75983eee |
|
BLAKE2b-256 | 2158e86a0272ff10e8adff7b37279396c5aea6b0c78c0877581e935126a7afcf |
关闭
pypinfo-22.0.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8880ee7aa5db10c3446e139ae7fb3c81073067aa03271cfde3fcb975c14f0f46 |
|
MD5 | 690ebf3e5f461426e7a4c10822d555d2 |
|
BLAKE2b-256 | 35abfae0b339539b2b47dbdac7c462cffec27cc395181eb0d44f2f8ae17a679a |