如何避免pip-compile生成requirements.txt时暴露GitHub Token
pip-compile 保留私有仓库Token占位符的解决方案
- 方案1:使用pip-tools原生参数支持
升级pip-tools到6.14.0及以上版本,编译时添加--preserve-env-var GITHUB_TOKEN参数即可保留占位符,执行命令示例:
生成的requirements.txt会直接保留GITHUB_TOKEN=你的实际Token pip-compile --preserve-env-var GITHUB_TOKEN requirements.in${GITHUB_TOKEN}格式,后续执行pip install时pip会自动读取当前环境的GITHUB_TOKEN变量完成鉴权下载。 - 方案2:剥离凭证到Git全局配置
先把requirements.in里的私有依赖地址改成不带Token的格式:
再执行Git配置命令,让Git访问对应前缀的仓库时自动注入环境变量里的Token:git+https://github.com/company/some-lib-name.git@v1.4.0
该方式下pip-compile和pip install全程不会接触明文Token,完全由Git层处理鉴权,不会出现Token泄露到依赖文件的问题。git config --global url."https://${GITHUB_TOKEN}@github.com/company/".insteadOf "https://github.com/company/" - 方案3:后置替换(适合临时应急场景)
如果不想升级工具或修改配置,可在编译完成后执行正则替换命令,把明文Token换回占位符:
可根据自己的Token前缀调整正则匹配规则即可。# macOS环境把sed -i改成sed -i '' sed -i "s/ghp_[a-zA-Z0-9]*@/\${GITHUB_TOKEN}@/g" requirements.txt
内容的提问来源于stack exchange,提问作者Misa
相关产品推荐
相关产品推荐

