我已在本地VM上安装了自托管代理,该代理已连接到Azure,确保那里没有任何问题。 我在Azure DevOps上有一个python代码 我已经将所有Requirements.txt要求手动安装到了本地VM的cmd行中,因此安装在其上的自托管代理不必安装它们(以最大程度地减少构建和部署时间)
但是当我在YAML文件中有以下代码来运行pytest情况时,由于发生以下错误,管道失败了
这是我的Yaml文件
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<alpha
android:duration="200"
android:fromAlpha="0.0"
android:toAlpha="1.0"/>
</set>
这是错误 ---------------开始:使用Python 3.8.6 ------------------------------任务:使用Python版本说明:使用工具缓存中指定的Python版本,可以选择添加转换为PATH版本:0.151.4作者:Microsoft Corporation帮助:https://docs.microsoft.com/azure/devops/pipelines/tasks/tool/use-python-version ------------------------------------------- [错误]版本规范3.8。架构x64的版本6与Agent.ToolsDirectory中的任何版本都不匹配。 C:\ CodeVersions_tool中的版本: 如果这是Microsoft托管的代理,请在https://aka.ms/hosted-agent-software处检查此映像是否支持Python的并行版本。如果这是一个自托管代理,请在https://go.microsoft.com/fwlink/?linkid=871498上了解如何配置并行Python版本。整理:使用Python 3.8.6 ---------------
答案 0 :(得分:1)
此错误是指 Python 不在代理工具目录中,因此对代理不可用。
以下是使用 Python 设置工具目录的(不完整)详细信息:
上述文档中的奥秘在于,它们所指的那些“工具文件”是什么?
谢天谢地,GitHub 上的 jrm346 通过源代码解决了这个问题;对于 Linux,您需要从源代码编译 Python 并重新配置目标目录:
https://github.com/microsoft/azure-pipelines-tasks/issues/10721
对于 Python 3.8:
在代理工具的目录下创建所需的文件结构:
蟒蛇
└── 3.8.0
├── x64
└── x64.complete
然后按照以下说明编译 Python 3.8.6,并添加一个小内容:在第 4 步的“/configure --enable-optimizations
”之后运行命令“./configure --prefix=/home/azure/_work/_tool/Python/3.8.0/x64
”,替换“/home/azure/_work” /_tool' 与您的代理的工具目录位置:
https://linuxize.com/post/how-to-install-python-3-8-on-ubuntu-18-04/
答案 1 :(得分:0)
您是否遵循How can I configure a self-hosted agent to use this task?
必须将所需的Python版本添加到自托管代理的工具缓存中,以便任务使用它。通常,工具高速缓存位于代理的_work / _tool目录下,否则该路径可以被环境变量
AGENT_TOOLSDIRECTORY
覆盖。在该目录下,根据您的Python版本创建以下目录结构:
答案 2 :(得分:0)
包括@Krzysztof Madej的建议,您还可以尝试重新启动自托管代理服务。