如何下载整个 pypi Python 包索引

How do I download the entire pypi Python Package Index

我正在尝试找到一种方法来下载整个 PyPi 索引——并且只有索引——没有代码文件。我想分析许可类型,以便能够排除许可类型过于严格的库。我已经在网上查看并浏览了用户指南,但如果答案就在那里,我也不知道。

好吧,您可以使用 PyPi's Simple Index 来获得一个简单的软件包列表,而无需额外开销。然后向

发送GET请求
https://pypi.python.org/pypi/<package-name>/json

这将 return 一个 JSON 响应,其中包含有关包的所有元数据信息(包括许可证)。

您可以在 google 云

中使用数据集 bigquery-public-data.pypi

例如

-- preview some licenses
SELECT substring(t.license, 0, 100) as license_start
FROM `bigquery-public-data.pypi.distribution_metadata` as t
group by t.license
order by length(t.license)
LIMIT 1000
OFFSET 0

-- get pypi packages with permissive licenses
SELECT t.name as package_name,
  substring(t.license, 0, 50) as license_start
FROM `bigquery-public-data.pypi.distribution_metadata` as t
where t.license like '%MIT%'
  or t.license like '%BSD%'
  or t.license like '%ISC%'
  or t.license like '%public domain%'
  or t.license like '%cc0%'
  or t.license like '%cc-0%'
  or t.license like '%unlicense%'
LIMIT 100000
OFFSET 0

题外话:

select 热门 python 包,按每月下载量排名

-- get popular versions of pypi packages
SELECT count(*) as dl_per_month, t.project, t.file.version
FROM `bigquery-public-data.pypi.file_downloads` as t
WHERE "2022-02-01" <= DATE(timestamp)
  and DATE(timestamp) < "2022-03-01"
group by t.project, t.file.version
order by dl_per_month desc
LIMIT 150000
OFFSET 0

相关:mach-nix

中使用了 pypi 的部分内容