Azure DevOps Pipeline - 偶尔无法加载Python

1 投票
1 回答
63 浏览
提问于 2025-04-14 17:50

我创建了一个ADO管道,用来把一些代码部署到PyPi仓库;不过,这个管道有时候会失败,并出现错误

python3: error while loading shared libraries: libpython3.9.so.1.0: cannot open shared object file: No such file or directory

这个管道的结构是一个使用Python版本的模块,后面接着一个命令行脚本的模块,而错误是在命令行脚本中一调用Python时就出现了。

1 个回答

0

这个错误信息通常是因为你的Python项目需要的Python库的共享对象文件找不到。造成这个错误的一个常见原因是你所需的Python版本(在你的情况下是Python 3.9)没有在你的机器上安装。

  1. 如果你是在自己的Linux机器上使用自托管的代理,确保你已经在代理机器上安装了Python 3.9,可以通过手动安装或者在管道中使用使用Python版本任务来完成。

  2. 如果你使用的是微软托管的Linux代理(比如ubuntu-22.04ubuntu-latest)或ubuntu-20.04),那么Python 3.9已经预安装在这些代理上,并且相关的共享对象文件(libpython3.9.so.1.0libpython3.9.so)也已经下载到Python 3.9的安装目录中。

    • ubuntu-22.04ubuntu-latest)代理上,默认的Python版本是Python 3.10。如果你想使用Python 3.9,可以使用使用Python版本任务3.9设置为默认版本。

    • ubuntu-20.04上,默认的Python版本是Python 3.8

    在这里输入图片描述


编辑:

根据你分享的YAML内容:

- task: UsePythonVersion@0
  displayName: 'Use Python >=3.8'
  inputs:
    versionSpec: '>=3.8'

你在UsePythonVersion任务中使用了设置"versionSpec: '>=3.8'"。这个设置会安装最新的Python版本(目前是3.12),而不是3.9

要安装3.9版本,你应该使用设置"versionSpec: '3.9'"。

- task: UsePythonVersion@0
  displayName: 'Use Python 3.9'
  inputs:
    versionSpec: '3.9'

撰写回答