Подпроцесс Python завершился сбоем: «не распознается как внутренняя или внешняя команда»Python

Программы на Python
Ответить
Anonymous
 Подпроцесс Python завершился сбоем: «не распознается как внутренняя или внешняя команда»

Сообщение Anonymous »

Я хотел бы автоматизировать задачу многократного запуска приложения с помощью подпроцесса Python.
Приложение называется ltx, и мне нужно запустить его с аргументом -h, например:
[~]$ ltx -h

Обратите внимание, что я уже добавил путь к .bashrc, поэтому могу запускать его из любого каталога:
export PATH=$PATH:/home/joe/ltx/bin

Это приложение должно работать на терминале Linux. В моем случае я использую терминал Cygwin64. Например:
[~]$ ltx -h
[INFO] Startup arguments: [-h]
NAME .....

Это показывает, что приложение работает успешно.
Я попробовал автоматизировать это с помощью подпроцесса Python, как показано ниже:
[~]$ python
Python 3.12.2 (tags/v3.12.2:6abddd9, Feb 6 2024, 21:26:36) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> import subprocess
>>> subprocess.run(['ls','-al'],shell=True) --> Test subprocess, working!
>>> subprocess.run(['ltx','-h'],shell=True) --> Now, this is what I want. But error
'ltng-decoder' is not recognized as an internal or external command,
operable program or batch file.
CompletedProcess(args=['ltng-decoder', '-h'], returncode=1)

>>> subprocess.run([r"C:\cygwin64\joe\ltx\bin\ltx","-h"],shell=True) -->Try this too, but still failed
'C:\cygwin64\home\joe\ltx\bin\ltx' is not recognized as an internal or external command,
operable program or batch file.
CompletedProcess(args=['C:\cygwin64\home\joe\ltx\bin\ltx', '-h'], returncode=1)

Можете ли вы подсказать, как это исправить или что попробовать дальше? Я просто хотел бы, чтобы подпроцесс успешно запускал ltx -h. Очень признателен.
===== следующее обновление к этому вопросу =====
  • Я добавил предложенный PATH
export PATH=$PATH:/home/joe/mos
export PATH="$PATH:C:\cygwin64\home\ephiiam\ltng\bin" --> added
  • проверьте новый PATH
[~]$ echo $PATH
C:\cygwin64\home\joe\ltx\bin
  • Попробуйте подпроцесс еще раз
-вызовите приложение
[~]$ ltx -h
[INFO] Startup arguments: [-h] -->working

-Попробовать подпроцесс --> все еще не удалось
[~]$ python
Python 3.12.2 (tags/v3.12.2:6abddd9, Feb 6 2024, 21:26:36) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
\>>> import subprocess
\>>> subprocess.run(['ltx','-h'], shell=True)
'ltx' is not recognized as an internal or external command,
operable program or batch file.
CompletedProcess(args=['ltx', '-h'], returncode=1)

**Обновлено
[~]$ export PATH="$PATH:C:\cygwin64\home\joe\ltx\bin"
[~]$ ltx -h
[INFO] Startup arguments: [-h]
NAME
...

[~]$ python
Python 3.12.2 (tags/v3.12.2:6abddd9, Feb 6 2024, 21:26:36) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.run(['ltx','-h'],shell=True)
'ltx' is not recognized as an internal or external command,
operable program or batch file.
CompletedProcess(args=['ltx', '-h'], returncode=1)
>>>

Дополнительные обновленные результаты
[~]$ export PATH="$PATH:C:\cygwin64\home\joe\ltx\bin"
[~]$ ltx -h
[INFO] Startup arguments: [-h]
NAME
...
Python 3.12.2 (tags/v3.12.2:6abddd9, Feb 6 2024, 21:26:36) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.run(['ltx','-h'])
Traceback (most recent call last):
File "", line 1, in
File "C:\Python\Python312\Lib\subprocess.py", line 548, in run
with Popen(*popenargs, **kwargs) as process:
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python\Python312\Lib\subprocess.py", line 1026, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Python\Python312\Lib\subprocess.py", line 1538, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [WinError 2] The system cannot find the file specified
>>> subprocess.run('ltx -h', shell=True)
'ltx' is not recognized as an internal or external command,
operable program or batch file.
CompletedProcess(args='ltx -h', returncode=1)


Подробнее здесь: https://stackoverflow.com/questions/798 ... ernal-comm
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»