问题描述
我目前正在 Azure 管道中运行 Python 脚本。
python脚本运行subprocess.run([cmd],capture_output=True),cmd为
格式的azcopy命令$(Agent.ToolsDirectory)/azcopy/azcopy 复制源目标{token}
目前我已经安装了 azcopy
- task: Bash@3
displayName: Install azcopy
inputs:
targettype: 'inline'
script: |
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
mkdir $(Agent.ToolsDirectory)/azcopy
wget -O $(Agent.ToolsDirectory)/azcopy/azcopy_v10.tar.gz https://aka.ms/downloadazcopy-v10-linux
tar -xf $(Agent.ToolsDirectory)/azcopy/azcopy_v10.tar.gz -C $(Agent.ToolsDirectory)/azcopy --strip-components=1
然后我有另一个运行 python 文件的 bash 脚本任务,但我收到了 [Errno 2] No such file or directory: '$(Agent.ToolsDirectory)/azcopy/azcopy'
$(Agent.ToolsDirectory)/azcopy/azcopy 当我在内联脚本中运行它时被识别,但当我通过 python 脚本运行命令时它不会。
解决方法
根据我的经验,可能的原因是使用$(Agent.ToolsDirectory)/azcopy/azcopy
时python脚本无法知道真实路径。您可以尝试给出没有任何变量的绝对路径或在 python 脚本中设置变量。当然,您需要确保所有任务都在同一个代理中运行。