2013-06-26 4 views
1

Я использую sh в python 2.7.5 для вызова программ оболочки, таких как curl и mkdir, но в плагине PyDev 2.7.5 в Eclipse 4.3.0. следующая строка дает Unresolved Import ошибку:Python sh import вызывает ошибку Unresolved Import в PyDev

from sh import curl, printenv, mkdir, cat 

Я могу запустить выше код в оболочке Python. У меня есть путь к sh, который включен в окно Libraries в окне Interpreter - Python в настройках, поэтому я не думаю, что в этом проблема.

ответ

2

Попробуйте использовать команды subprocess module для вызова команд консоли. Например:

from subprocess import call 
dir_name = '/foo/bar/' 
call('mkdir %s'%dir_name, shell=True) 
+0

Я подумаю об использовании этого, если я не могу правильно получить импорт sh. Благодаря! –

1

Как сказал Билл, подпроцессом является хорошим выбором здесь. Я лично рекомендую использовать Popen, потому что он не блокируется и позволяет ждать завершения команд с помощью метода communication(), который также возвращает stdout и stderr. Также избегайте использования shell = True, когда это возможно. Использование:

import subprocess 
testSubprocess = subprocess.Popen(['mkdir', dir_name], stdout=subprocess.PIPE) 
testOut, testErr = testSubprocess.communicate()