使用 Azure Pipelines 上传 python 包时出错

Posted

技术标签:

【中文标题】使用 Azure Pipelines 上传 python 包时出错【英文标题】:Error while uploading python package with Azure Pipelines 【发布时间】:2021-09-14 05:28:16 【问题描述】:

我正在尝试使用 Azure Pipelines 构建包并将其提交到 Azure Artifacts 源。天蓝色管道文件:

- script: |
    pip install wheel
    pip install twine
  displayName: 'Install wheel and twine'

- script: |
    python setup.py bdist_wheel
  displayName: 'Build package'
    
- task: TwineAuthenticate@1
  displayName: 'Twine Authenticate'
  inputs:
    artifactFeed: 'PythonPackages'

- script: |
    cat $(PYPIRC_PATH)
    python -m twine upload -r PythonPackages --verbose --config-file $(PYPIRC_PATH) dist/*.whl
  displayName: 'Publish package'

但我收到以下错误:

Uploading nxgeometry-0.1-py3-none-any.whl

  0%|          | 0.00/3.90k [00:00<?, ?B/s]
100%|██████████| 3.90k/3.90k [00:00<00:00, 4.12kB/s]
Content received from server:
"$id":"1","innerException":null,"message":"The URL '#' is invalid.","typeName":"Microsoft.VisualStudio.Services.Packaging.Shared.WebApi.Exceptions.InvalidPackageException, Microsoft.VisualStudio.Services.Packaging.Shared.WebApi","typeKey":"InvalidPackageException","errorCode":0,"eventId":3000
HTTPError: 400 Bad Request from https://pkgs.dev.azure.com/MyOrganization/_packaging/PythonPackages/pypi/upload
Bad Request - The URL '#' is invalid. (DevOps Activity ID: 6E1BE784-A98A-4052-BC7F-B4E4DB7231F0)
##[error]Bash exited with code '1'.
Finishing: Publish package

有什么想法吗?

【问题讨论】:

【参考方案1】:

在 setup.py 中,将 URL 设置为您尝试从中发布的存储库的 Azure DevOps 链接。该错误一定是由于您的 setup.py 中的 url 与存储库的 url 不同。

例如

setup(
    name='omega',
    packages=['omega'],
    description='Omega package for shared functions',
    version='0.1',
    url='https://dev.azure.com/<organization-name>/<project-name>/_git/<repository-name>',
    author='Bond, James Bond',
    author_email='bond@mi6.secret',
    keywords=['pip','omega']
)

【讨论】:

以上是关于使用 Azure Pipelines 上传 python 包时出错的主要内容,如果未能解决你的问题,请参考以下文章

建立Azure Dev Ops持续集成和持续交付(CICD)(使用 Azure Pipelines 建立CICD)

对 Azure Boards 和 Azure Pipelines 使用相同的名称

如何在 azure-pipelines 中使用公钥对某些内容进行 scp?

如何在 Azure Pipelines Yaml 上循环多个 Azure 订阅?

如何使用 Azure Key Vault 中的证书/密钥对使用 Azure Pipelines 构建的代码进行签名?

Azure Pipelines 中的多行字符串