[英]Sharing artifacts-keyring authentication and pip.conf with devcontainer to reach private Azure feed
[英]Connect to feed in Azure Artifacts using poetry (or pipenv) with artifacts-keyring
我是使用 Azure 的初学者,特别是我的问题与发布 python 包有关。 我有一个用诗歌管理的 package,我在twine的帮助下将它发布到私人存储库。 我用来发布的命令如下(在这部分我已经在虚拟环境中安装了artifacts-keyring )
poetry build
python -m twine upload -r ${ARTIFACT_FEED} --config-file /PYPIRC dist/*
这里, ARTIFACT_FEED
是提要的名称。 我对这些命令没有任何问题,并且 package 的发布没有问题。
现在,要使用一个也用诗歌管理的项目,并且使用我的其他 package 已经出版,我想做
poetry add my_package_name
以pyproject.toml
作为诗歌的文档
[[tool.poetry.source]]
name = "foo"
url = <MY_PRIVATE_COMPANY_REPO_URL>
secondary = true
在虚拟环境中安装了artifacts-keyring
后,我收到此错误401 Client Error: Unauthorized for url: <MY_PRIVATE_COMPANY_REPO_URL>
。 使用pipenv
我有同样的问题。 好吧,也许poetry
不支持这种身份验证。 相关链接:
管理员是否可以更改身份验证类型? 当我进入连接到提要页面时,我看到了这个
所以,似乎是强制使用artifacts-keyrings
。 在之前的项目中,对于另一家公司,我们使用基本身份验证,像这样
poetry publish --repository <PRIVATE_REPO> --username <USERNAME> --password <PASSWORD> --build
然后安装 package 我没有问题。
您可以使用基本身份验证,用户名可以是任何东西,密码必须是个人访问令牌。
Poetry 目前确实可以与artifacts-keyring
一起使用,请参阅python-poetry#4086 。
Pipenv 可以,但是您的虚拟环境需要安装artifacts-keyring
,在您的主安装中安装azure-devops-artifacts-helpers
并配置 virtualenv 以使用它提供的azdo-pip
播种器,这让生活更轻松。
#powershell
python -m pip install --user azure_devops_artifacts_helpers artifacts-keyring
[Environment]::SetEnvironmentVariable("VIRTUALENV_SEEDER", "azdo-pip", "Machine")
[Environment]::SetEnvironmentVariable("PIP_INDEX_URL", "https://pkgs.dev.azure.com/XXXXX/_packaging/YYYYY/pypi/simple/", "Machine")
点文件:
[[source]]
url = "${PIP_INDEX_URL}"
name = "azdo"
从理论上讲,可以通过创建您自己的密钥环实现来欺骗(?)诗歌使用工件密钥环,该实现检测诗歌何时根据服务值使用密钥环,解构所述值,查找 url 的私人回购然后做你的own keyring lookup with the url followed by a lookup for the "netloc" (just the dns name) part of the url since that is what Pip does.
祝你好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.