Включение Cygwin в программу Python

Поскольку я новичок во всем, что связано с конвейерами и Python, я недавно столкнулся с проблемой, пытаясь передать stdin и stdout Cygwin в программу python с использованием модуля подпроцесса Python. например я взял простую программу:

cygwin = subprocess.Popen('PathToCygwin',shell=False,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
cygwin.stdin.write('ssh')

После этого я получаю эту ошибку:

cygwin.stdin.write('ssh')
IOError: [Errno 22] Invalid argument

Что я делаю не так?


person Zaidman    schedule 23.11.2009    source источник


Ответы (1)


Ну, ваш буквальный код не будет работать. Вы передаете строку со значением PathToCygwin, и это ничего не даст. Я предполагаю, что вы передаете лучшую строку, чем эта, но вы не показали нам, что именно.

Я думаю, что проблема в вашем PathToCygwin. Если вы не получите правильный путь, это не сработает.

Вот мой тестовый код. Я запустил это в версии Python для Cygwin, поэтому я использовал путь в стиле Cygwin: вместо r"C:\cygwin\bin\bash.exe" я использовал путь /cygdrive/c:

>>> cpath = "/cygdrive/c/cygwin/bin/bash.exe"
>>> cygwin = subprocess.Popen(cpath,shell=False,stdin=subprocess.PIPE,stdout=su
bprocess.PIPE)
>>> cygwin.stdin.write("ssh")
>>>

Опять же, я запустил это в версии Python, скомпилированной Cygwin. Если вы используете собственную версию Python для Windows, вам, вероятно, потребуется использовать путь C:.

Если у вас все еще есть проблемы, не могли бы вы сообщить нам, какую именно версию Python вы используете, и показать нам фактический код пути, который вы используете?

person steveha    schedule 23.11.2009