У меня есть функция, которая работает lessc
(устанавливается с npm install -g less
):Windows, subprocess.Popen пакетный файл без оболочки = True
>>> import subprocess
>>> subprocess.Popen(['lessc'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
К сожалению, это не работает, если я не добавить shell=True
:
>>> subprocess.Popen(['lessc'], shell=True)
<subprocess.Popen object at 0x01F619D0>
Что можно сделать, чтобы сделать lessc
без использования shell=True
?
Можете ли вы вызвать двоичный код явно с полным именем пути без использования 'shell = True'? – kragniz
@kragniz: 'lessc' - командный файл (который может быть проблемой), и такая же ошибка возникает, когда я запускаю его с полным путем. – Blender
Является ли ошибка, вызванная самим модулем подпроцесса или пакетным скриптом? Вы можете добавить 'cwd = r'c: \ path \ to \ script \ '' аргумент для вызова Popen – JBernardo