subprocess.Popen () possui um comportamento inconsistente entre o Eclipse / PyCharm e a execução do terminal

O problema que estou tendo é com o Eclipse / PyCharm interpretando os resultados do Popen () do subprocesso de maneira diferente de um terminal padrão. Todos estão usando python2.6.1 no OSX.

Aqui está um exemplo de script simples:

import subprocess

args = ["/usr/bin/which", "git"]
print "Will execute %s" % " ".join(args)
try:
  p = subprocess.Popen(["/usr/bin/which", "git"], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  # tuple of StdOut, StdErr is the responses, so ..
  ret = p.communicate()
  if ret[0] == '' and ret[1] <> '':
    msg = "cmd %s failed: %s" % (fullcmd, ret[1])
    if fail_on_error:
      raise NameError(msg)
except OSError, e:
  print >>sys.stderr, "Execution failed:", e

Com um terminal padrão, a linha:

ret = p.communicate()

me dá:

(Pdb) print ret
('/usr/local/bin/git\n', '')

Eclipse e PyCharm fornecem uma tupla vazia:

ret = {tuple} ('','')

Alterar o valor shell = também não resolve o problema. No terminal, definir shell = True e passar o comando completamente (ou seja, args = ["/ usr / bin / qual git"]) me dá o mesmo resultado: ret = ('/ usr / local / bin / git \ n ',' '). E Eclipse / PyCharm me fornecem uma tupla vazia.

Alguma idéia do que eu poderia estar fazendo de errado?

questionAnswers(1)

yourAnswerToTheQuestion