Ошибка 2] Такого файла или каталога нет: ‘$(Агент.Каталог инструментов)/azcopy/azcopy’

#python #azure #devops #azcopy

Вопрос:

В настоящее время я запускаю скрипт python в конвейере Azure.

Скрипт python запускает подпроцесс.run([cmd], capture_output=True), а cmd-это команда azcopy в формате

$(Агент.Каталог инструментов)/azcopy/azcopy цель копирования источника{токен}

в настоящее время у меня установлена 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
 

Затем у меня есть еще одна задача скрипта bash, которая запускает файл python, но я получаю сообщение об ошибке [Errno 2] Нет такого файла или каталога: ‘$(Агент.Каталог инструментов)/azcopy/azcopy’

$(Агент.Каталог инструментов)/azcopy/azcopy распознается, когда я запускаю его во встроенном скрипте, но не распознается, когда я запускаю команду через скрипт python.

Комментарии:

1. Есть какие-нибудь новости по этому вопросу? Решает ли это вашу проблему? Пожалуйста, дайте мне знать, если у вас есть какие-либо ответы.

Ответ №1:

По моему опыту, возможная причина в том, что скрипт python не может знать реальный путь, когда вы используете $(Agent.ToolsDirectory)/azcopy/azcopy . Вы можете попытаться указать абсолютный путь без каких-либо переменных или задать переменные внутри скрипта python. Конечно, вам нужно убедиться, что все задачи выполняются в одном и том же агенте.