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\")'
Другие вопросы по тегам