Если 'somescript.py' не является чем-то, что вы обычно можете выполнить непосредственно из командной строки (т. Е. $: somescript.py
работает), то вы не можете вызвать его напрямую с помощью call.
Помните, чтоПопен работает так, что первый аргумент - это программа, которую он выполняет, а остальные аргументы, передаваемые этой программе.В этом случае программа на самом деле python , а не ваш скрипт.Таким образом, следующее будет работать так, как вы ожидаете:
subprocess.call(['python', 'somescript.py', somescript_arg1, somescript_val1,...]).
Это правильно вызывает интерпретатор Python и говорит ему выполнить ваш скрипт с заданными аргументами.
Обратите внимание, что это отличается от приведенного вышепредложение:
subprocess.call(['python somescript.py'])
Это попытается выполнить программу с именем python somscript.py , которая явно не существует.
call('python somescript.py', shell=True)
Также будет работать,но использование строк в качестве входных данных для вызова не является кроссплатформенным, опасно, если вы не тот, кто строит строку, и обычно его следует избегать, если это вообще возможно.