跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 关于 Python 的库开源问题
未分類
3 4 月 2021

关于 Python 的库开源问题

关于 Python 的库开源问题

資深大佬 : linlin6 0

请教下各位老哥,有查询 Python 的第三方库用什么开源协议的网站吗,我现在安装都直接 pip install ***安装了,然后网上找的话这方面资料几乎没有,是要 fq 找吗。
主要是通过一些第三方库开发了几个软件,然后有人询问出售,目前不清楚这些库是用哪种开源协议的。
大佬有話說 (11)

  • 資深大佬 : wevsty

    pip 安装的 lib 在 pypi 上可以直接找到授权信息:
    比如:
    https://pypi.org/project/numpy-stl/

    如果 pypi 上没有写,就需要看项目本身的网站或者版本库了。

  • 資深大佬 : ClericPy

    多数情况 Github 上都直接搜的到… 正规点的库在 pypi 官网也该填了的

  • 資深大佬 : no1xsyzy

    $> grep ‘^License: ‘ $VIRTUAL_ENV/lib/python*/site-packages/*.dist-info/METADATA

  • 資深大佬 : no1xsyzy

    $> awk ‘BEGINFILE{PRINTED=0} /^License: /{print FILENAME, “-“, $0; PRINTED=1} ENDFILE{if(PRINTED==0)print FILENAME, “- NO LICENSE!!!”}’ $VIRTUAL_ENV/lib/python*/site-packages/*.dist-info/METADATA

    欸,我写这干嘛(太诡了

  • 資深大佬 : sunhk25

    有个库可以查出当前环境所有 pip 安装的软件的协议。名字忘了,可以找找。

  • 主 資深大佬 : linlin6

    @wevsty
    @ClericPy
    @sunhk25 谢谢各位老哥

  • 主 資深大佬 : linlin6

    @no1xsyzy 这是遍历出所有的 METADATA 文件吗

  • 資深大佬 : no1xsyzy

    @linlin6 对的,但没有去校验 *.dist-info/LICENSE
    理论上需要 LICENSE 文件配套才能算真的符合。
    在线版可能在发生变动的情况下也跟你本地的不一致,如果你打包的话 LICENSE 文件才是实际对版权法生效的那个。

    Metadata 里会有个问题,License 项没法区分 BSD-2-clause 和 BSD-3-clause,都是 BSD license,在 Classifier 项里才会有 BSD 和 BSD-like 的区别…… 具体也没细看。

  • 資深大佬 : sunhk25

    “`python
    import pkg_resources

    def get_pkg_license(pkg):
    try:
    lines = pkg.get_metadata_lines(‘METADATA’)
    except:
    lines = pkg.get_metadata_lines(‘PKG-INFO’)

    license = ‘UNKNOWN’
    labels = [‘License: ‘, ‘Classifier: License :: OSI Approved :: ‘]
    for label in labels:
    for line in lines:
    if line.startswith(label):
    license = line[len(label):]
    break
    if license != ‘UNKNOWN’:
    return license

    return ‘(Licence not found)’

    def get_pkg_home_page(pkg):
    try:
    lines = pkg.get_metadata_lines(‘METADATA’)
    except:
    lines = pkg.get_metadata_lines(‘PKG-INFO’)
    label = ‘Home-page: ‘
    for line in lines:
    if line.startswith(label):
    url = line[len(label):]
    break
    if url == ‘UNKNOWN’:
    url = ‘https://pypi.python.org/pypi/’+pkg.key
    return url

    def create_packages_and_licenses_text():
    text = ”
    for pkg in sorted(pkg_resources.working_set, key=lambda x: str(x).lower()):
    text += ‘t’.join([pkg.key,pkg.version,get_pkg_license(pkg),get_pkg_home_page(pkg)]) + ‘n’
    return text

    if __name__ == “__main__”:
    text = create_packages_and_licenses_text()
    print(text)

    filename = ‘packages_and_licenses.txt’
    with open(filename, ‘w’, encoding=’Shift-JIS’) as f:
    f.write(text)
    “`

  • 資深大佬 : sunhk25

    @sunhk25 markdown 不灵了,自己去看吧 http://futago-life.com/wife-support/tech/python-lib-license.html

  • 主 資深大佬 : linlin6

    @no1xsyzy 谢谢老哥

    @sunhk25 谢谢老哥,能跑成功

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具