Errno 2] 没有这样的文件或目录:'$(Agent.ToolsDirectory)/azcopy/azcopy'

问题描述

我目前正在 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 脚本中设置变量。当然,您需要确保所有任务都在同一个代理中运行。