
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
许可证合规工具,用于检测Python PyPI包的许可证名称和类型,支持多种格式的依赖文件(Python、Clojure、JavaScript、iOS、Android等),能够识别公共领域、许可型、copyleft等各类开源许可证,帮助开发团队确保项目依赖的许可证合规性,降低***风险。
requirements.txt(检测许可证名称和类型)覆盖各类免费/自由和开源许可证:
支持排除特定包、自定义报告格式、设置失败条件(如检测到copyleft许可证时返回非零退出码)等。
I. Docker
1. 拉取官方镜像(推荐)
从https://hub.docker.com/r/pilosus/pip-license-checker/%E6%8B%89%E5%8F%96%EF%BC%9A
bashdocker pull docker.xuanyuan.run/pilosus/pip-license-checker
可指定版本标签(如0.41.0)或使用latest。
2. 自行构建镜像
bashgit clone https://github.com/pilosus/pip-license-checker.git cd pip-license-checker docker build -t pilosus/pip-license-checker .
II. 其他安装方式(可选)
基本用法(检查Python包)
直接指定Python包名及版本范围:
bashdocker run -it --rm docker.xuanyuan.run/pilosus/pip-license-checker \ java -jar app.jar 'aiostream==0.4.3' 'pygit2' 'aiohttp>3.7.1'
检查本地文件(挂载主机目录)
需检查本地文件(如requirements.txt)时,使用-v挂载主机目录至容器内/volume:
bashdocker run -v `pwd`:/volume \ -e GITHUB_TOKEN=your-gh-token \ # 可选,用于提高GitHub API速率限制 -it --rm pilosus/pip-license-checker \ java -jar app.jar \ --exclude 'pylint.*' \ # 排除匹配正则的包 --requirements '/volume/requirements.txt' \ # Python需求文件 --external '/volume/licenses.csv' \ # 外部许可证文件 --fail StrongCopyleft \ # 检测到StrongCopyleft时失败 --fails-only \ # 仅显示失败项 --verbose # 详细输出
以下示例基于源码编译的lein run,独立jar包替换为java -jar pip-license-checker-[version]-standalone.jar。
查看帮助信息
bashlein run
检查单个Python包
bashlein run piny==0.6.0 # 指定版本 lein run aiostream # 最新稳定版
检查requirements.txt文件
bashlein run --requirements resources/requirements.txt
输出示例:
aiohttp:3.7.2 Apache Software License Permissive piny:0.6.0 MIT License Permissive aiostream:0.4.3 GPLv3 StrongCopyleft mo-collections:4.30.21121 Mozilla Public License 2.0 (MPL 2.0) WeakCopyleft ...
排除特定包
排除名称匹配aio.*的包:
bashlein run --requirements resources/requirements.txt --exclude 'aio.*'
生成JSON报告
bashlein run --requirements resources/requirements.txt --report-format json-pretty --totals
| 选项 | 描述 | 示例 |
|---|---|---|
-v, --verbose | 详细程度:error(-v)、info(-vv)、debug(-vvv) | -vv |
-r, --requirements FILE | Python需求文件路径 | --requirements req.txt |
-x, --external FILE | 外部许可证文件路径 | --external licenses.csv |
--external-format FORMAT | 外部文件格式:csv/cocoapods/gradle | --external-format cocoapods |
--fail TYPE | 许可证类型检测失败条件 | --fail StrongCopyleft |
--exclude REGEX | 排除包名匹配的正则 | --exclude 'aio.*' |
--report-format FORMAT | 报告格式:stdout/json/csv | --report-format json-pretty |
--github-token TOKEN | GitHub令牌(提高API速率) | --github-token ghp_xxx |
| 类型 | 说明 | 示例许可证 |
|---|---|---|
| NetworkCopyleft | 网络copyleft | GNU Affero GPL |
| StrongCopyleft | 强copyleft | GNU GPL |
| WeakCopyleft | 弱copyleft | MPL、EPL |
| Copyleft | 所有copyleft类型 | - |
| Permissive | 许可型 | MIT、BSD |
| Other | 未识别/专有 | 自定义EULA |
| Error | 许可证未找到 | - |
CSV格式
默认跳过表头,包名列索引0,许可证名列索引1,可通过--external-options自定义:
bashlein run -x data.csv --external-options '{:skip-header false :package-column-index 1}'
CocoaPods格式(iOS)
指定外部格式为cocoapods:
bashlein run -x Pods-Acknowledgements.plist --external-format cocoapods
Gradle格式(Android)
指定外部格式为gradle:
bashlein run -x licenses.json --external-format gradle
Q1: 是否考虑Python包版本?许可证变更如何处理?
工具会解析包版本(类似pip),并仅检查解析版本的许可证。
Q2: 如何检查所有依赖(含传递依赖)?
工具仅检查显式依赖,可通过pip freeze生成完整依赖列表:
bashpip freeze > all-reqs.txt && lein run -r all-reqs.txt
Q3: 是否支持PEP-508的extras和markers?
不支持,需通过Q2方法生成实际安装的依赖列表。
工具按"原样"提供,不保证信息准确性,不构成***建议,不对使用造成的损害负责。
Copyright © 2020-2025 Vitaly Samigullin
基于Eclipse Public License 2.0或GPL-2.0 WITH Classpath-exception-2.0许可。SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务