关于 Python 的库开源问题
主要是通过一些第三方库开发了几个软件,然后有人询问出售,目前不清楚这些库是用哪种开源协议的。
如果 pypi 上没有写,就需要看项目本身的网站或者版本库了。
欸,我写这干嘛(太诡了
Metadata 里会有个问题,License 项没法区分 BSD-2-clause 和 BSD-3-clause,都是 BSD license,在 Classifier 项里才会有 BSD 和 BSD-like 的区别…… 具体也没细看。
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 谢谢老哥,能跑成功