2015-06-04 3 views
2

Я уже пробовал sys.platform, platform.system() и os.name, но ни один из них не возвращал что-то связанное с cygwin (я всегда получаю win32, Windows и nt в качестве вывода). Может быть, потому, что мой python был установлен на windows (8.1), а не через cygwin. Мне нужно определить, выполняется ли мой файл python с помощью cygwin или cmd.Как определить терминал, на котором запущен python?

+0

Так интерактивный или сценарий? – Zizouz212

+0

Вы можете сделать это взломанным способом. Вы можете попытаться выполнить/bin/sh, который будет выполняться в Cygwin, но не в DOS. Вы могли бы сделать наоборот и попытаться запустить dir, который будет работать только под DOS. – Sirens

+0

Вам нужно посмотреть на свой родительский процесс, что-то вроде psutil, должно это сделать https://pypi.python.org/pypi/psutil – cdarke

ответ

0

Cygwin использует пути в стиле Linux; Таким образом, вы можете быть в состоянии проверить разделитель пути:

import sys 
import os.path 

def running_cygwin(): 
    return sys.platform == 'win32' and os.path.sep == '/' 

(я не имею Cygwin здесь, так что это не тестировалась.)

+1

Это неправильно, Cygwin Python имеет 'sys.platform == 'cygwin''. –

+0

Пауло говорит, что он проверил 'sys.platform'; так что это, вероятно, неверно для всех версий ... – Tobias

+0

Я думаю, что здесь существует путаница между терминалом Python и Python Cygwin. Вероятно, он запускал Windows Python внутри подсказки Cygwin (в этом случае для проверки было бы 'sys.stdout.isatty()'). –

Смежные вопросы