Python: выполнение сложной команды в Windows
У меня проблема при запуске команды в Windows, в то время как она отлично работает в Linux.
Я даю вам контекст, но это не обязательно, чтобы понять мою проблему: я использую gimp в пакетном режиме.
У меня есть скрипт на Python callPythonFuScript.py
который вызывает другой скрипт Python, pythonFu.py
, который выполняет вызов python-fu.
В callPythonFuScript.py
, Я строю командную строку, когда я вызываю функцию внутри pythonFu.py
быть выполненным. Это командная строка:
gimp-console-2.8 -idf --batch-interpreter python-fu-eval -b 'import sys;sys.path=['.']+sys.path;import pythonFu;pythonFu.myFunction("arg1","arg2","arg3") ' -b 'pdb.gimp_quit(1)'
Эта команда отлично работает в Linux, но когда я пытаюсь запустить ее в Windows, она не работает.
Сообщения об ошибках:
The opening of C:\Users\myRep\sys; failed : no such file or directory
The opening of C:\Users\myRep\sys.path=['.']+sys.path; failed : no such file or directory
The opening of C:\Users\myRep\"arg1","arg2","arg3")' failed no such file or directory
Я предполагаю, что Windows интерпретирует символы иначе, чем Linux. Это правильно? Как я могу исправить эту проблему?
1 ответ
Как упоминалось в комментариях, у вас возникла проблема с выходом между тем, что командная строка видит в качестве аргументов, и тем, что передается в виде литеральной строки для python в eval:
-b 'import sys;sys.path=["."]+sys.path;import pythonFu;pythonFu.myFunction("arg1","arg2","arg3")'
Если это все еще дает вам ошибки, возможно, вам может понадобиться экранировать двойные кавычки:
-b 'import sys;sys.path=[\".\"]+sys.path;import pythonFu;pythonFu.myFunction(\"arg1\",\"arg2\",\"arg3\")'