Poetry添加Azure DevOps存储包时遇授权错误求助
解决Poetry添加Azure DevOps Python包的授权失败问题
环境信息
- 设备:Mac M1 Pro(Sequoia 15.1)
- Python版本:3.11
- Poetry版本:1.8.4
- Azure DevOps PAT:已配置Packaging>Read权限,未过期,无特殊字符
问题描述
尝试通过Poetry将Azure DevOps中创建的npipack包添加为本地项目依赖时,执行poetry add npipack --source azure出现授权错误,提示访问源地址时授权失败。已完成以下前置操作:
- 设置环境变量
AZURE_DEV_OPS_PAT存储有效PAT - 在
pyproject.toml中配置Azure源 - 配置Poetry的Azure仓库及http-basic认证
- 安装
artifacts-keyring
排查修复步骤
1. 验证环境变量加载状态
终端执行以下命令确认AZURE_DEV_OPS_PAT是否被正确读取:
echo $AZURE_DEV_OPS_PAT
若输出为空,说明环境变量未生效。Mac M1默认使用zsh,需将变量永久添加到~/.zshrc:
echo 'export AZURE_DEV_OPS_PAT="你的PAT值"' >> ~/.zshrc source ~/.zshrc
重启终端后再次验证。
2. 检查pyproject.toml源配置格式
确保pyproject.toml中的Azure源配置正确,替换占位符为你的实际信息:
[[tool.poetry.source]] name = "azure" url = "https://pkgs.dev.azure.com/你的组织名/_packaging/你的feed名/pypi/simple/" priority = "explicit"
注意URL末尾必须包含斜杠/,否则会导致授权路径匹配失败。
3. 重新配置Poetry仓库认证
http-basic配置可能存在遗漏或错误,重新执行以下命令(用户名可任意填写,Azure仅校验PAT):
poetry config repositories.azure https://pkgs.dev.azure.com/你的组织名/_packaging/你的feed名/pypi/simple/ poetry config http-basic.azure dummy $AZURE_DEV_OPS_PAT
4. 修复artifacts-keyring兼容性
Poetry 1.8.x与最新版artifacts-keyring可能存在兼容问题,安装指定稳定版本:
pip install artifacts-keyring==1.0.1
安装完成后重启终端,确保keyring服务正常加载。
5. 直接验证PAT权限
在浏览器中访问https://pkgs.dev.azure.com/你的组织名/_packaging/你的feed名/pypi/simple/npipack/,认证弹窗中用户名填任意值,密码填你的PAT:
- 若能正常访问,说明PAT权限有效,问题出在Poetry配置;
- 若仍无法访问,需检查PAT的权限范围或重新生成PAT(确保勾选Packaging > Read权限)。
6. 清除Poetry缓存
缓存中的旧认证信息可能导致冲突,执行以下命令清除缓存:
poetry cache clear --all pypi poetry cache clear --all azure
之后重新执行poetry add npipack --source azure
内容的提问来源于stack exchange,提问作者Davide Motta
相关产品推荐
相关产品推荐

