У меня есть две очень похожие машины Windows 7 Enterprise.
Но когда я запускаю этот кусок кода (python 2.73), он работает на одном из них, но не на другом.
command = [
'artifact',
'cp',
source,
target
]
artifact_process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
Я получаю это сообщение об ошибке:
artifact_process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
File "C:\Python27\lib\subprocess.py", line 390, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 640, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
Команда «Артефакт», которую я пытаюсь запустить с некоторыми аргументами, - это просто разработанный Java инструмент командной строки.Он находится на PATH для обеих машин, и он отлично работает, чтобы запустить одну и ту же команду вручную.
C:\Jenkins\3\workspace>where artifact
C:\Binaries\artifact-cli\artifact
C:\Binaries\artifact-cli\artifact.bat
Но когда я пытаюсь запустить ее с помощью скриптов Python и команды подпроцесса, на одном из компьютеров происходит сбой.Если я добавлю «shell = True» в команду подпроцесса.Затем он работает на обеих машинах.
Я пытался сравнить настройки для обеих этих машин, пытаясь найти разницу, которая могла бы помочь объяснить, почему она работает на одной, а не на другой.Но до сих пор я оказался пустым.
Я действительно хотел бы избегать использования "shell = True", и, насколько я понимаю, мне не нужно было бы выполнять такую операцию.
Вопрос в том.Что в Windows может вызвать эту разницу?