【问题标题】:How do I download the entire pypi Python Package Index如何下载整个 pypi Python 包索引
【发布时间】:2016-09-16 18:26:44
【问题描述】:

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

【问题讨论】:

  • 您可以使用JSON interface 获取有关给定包名称的信息。 master list of package names exists here.
  • 摩根 - 谢谢。该列表给出了名称和描述,但我正在寻找完整的数据 - 许可证类型、标签、作者等。
  • 是的,这是第一个链接。

标签: python pypi


【解决方案1】:

好吧,您可以使用PyPi's Simple Index 来获得一个简单的软件包列表,而无需开销。然后发送一个GET请求到

https://pypi.python.org/pypi/<package-name>/json

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

【讨论】:

    【解决方案2】:

    您可以在谷歌云中使用数据集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
    

    题外话:

    选择流行的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
    
    

    【讨论】:

      猜你喜欢
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-29
      • 2021-09-15
      • 2018-02-26
      • 2012-07-29
      • 2014-08-10
      相关资源
      最近更新 更多