Python Azure自托管代理运行pytest

Python Azure自托管代理运行pytest,python,azure,azure-devops,pytest,Python,Azure,Azure Devops,Pytest,我已经在本地VM上安装了一个自托管代理,它已连接到azure,没有问题。 我在azure DevOps上有一个python代码 我已经将所有requirements.txt需求手动安装到本地VM的cmd行中,这样安装在本地VM上的自托管代理就不必安装它们(以最大限度地减少构建和部署时间) 但当我在YAML文件中有下面的代码来运行pytest用例时,由于下面的错误,管道失败了 这是我的Yaml文件 触发器: -主人 变量: python.version:3.8.6 阶段: -阶段:建造 工作: -

我已经在本地VM上安装了一个自托管代理,它已连接到azure,没有问题。 我在azure DevOps上有一个python代码 我已经将所有requirements.txt需求手动安装到本地VM的cmd行中,这样安装在本地VM上的自托管代理就不必安装它们(以最大限度地减少构建和部署时间)

但当我在YAML文件中有下面的代码来运行pytest用例时,由于下面的错误,管道失败了

这是我的Yaml文件

触发器:
-主人
变量:
python.version:3.8.6
阶段:
-阶段:建造
工作:
-工作:建造
游泳池:
姓名:'Maitza'
#游泳池:
#vmImage:“windows最新版本”#windows最新版本或windows-2019;vs2017-win2016#https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml#软件#vs2017-win2016
步骤:
-任务:UsePythonVersion@0
投入:
versionSpec:“$(python.version)”
displayName:'使用Python$(Python.version)'
-脚本:“pip安装pytest pytest azurepipelines;pytest单元_测试/'
这就是错误所在 ---------------开始:使用Python 3.8.6 ------------------------------任务:使用Python版本说明:使用工具缓存中指定的Python版本,可以选择将其添加到路径版本:0.151.4作者:Microsoft Corporation帮助: -------------------------------------------[错误]体系结构x64的版本规范3.8.6与Agent.ToolsDirectory中的任何版本都不匹配。C:\CodeVersions\u工具中的版本: 如果这是Microsoft托管的代理,请检查此映像是否支持Python的并行版本。如果这是一个自托管代理,请参阅如何在上配置并行Python版本。整理:使用Python 3.8.6 ---------------

你听懂了吗

所需的Python版本必须添加到自托管代理上的工具缓存中,以便任务使用它。通常,工具缓存位于代理的_work/_tool目录下,或者路径可以由环境变量
agent_TOOLSDIRECTORY
覆盖。在该目录下,根据Python版本创建以下目录结构:


包括@Krzysztof Madej的建议,您还可以尝试重新启动自托管代理服务。

此错误表示Python不在代理工具目录中,因此代理无法使用

以下是使用Python设置工具目录的(不完整)详细信息:

上述文档中的神秘之处在于,它们所指的“工具文件”是什么

谢天谢地,GitHub上的jrm346通过源代码来解决这个问题;对于Linux,您需要从源代码处编译Python并重新配置目标目录:

对于Python 3.8:

  • 在代理工具的目录下创建所需的文件结构:

    蟒蛇

     └── 3.8.0
         ├── x64
         └── x64.complete
    
  • 然后按照以下说明编译Python3.8.6,只需添加一个小部分:在第4步的“
    /configure--enable optimizations
    ”之后运行命令“
    /configure--prefix=/home/azure/\u work/\u tool/Python/3.8.0/x64
    ”,将“/home/azure/\u work/\u tool”替换为代理的工具目录位置:


    您是否浏览了下面的链接?是否查看了我们的回复?你的问题进展如何?问题解决了吗?