This is my code:
def uploadByRSync(host, user, passwd, src, dst, statusManager):
    try:
        os.environ["RSYNC_PASSWORD"] = passwd
        print host, user, passwd, src, dst
        parameters = ["rsync", "-azP", "--partial", src ,"{3}@{0}::{2}/{1}".format(host, dst, user, user)]
        print " ".join(parameters)
        process = subprocess.Popen(parameters, stdout=subprocess.PIPE,  stderr=subprocess.STDOUT,  universal_newlines=True)
        for line in unbuffered(process):
            if "%" in line:
                spl = line.split()
                statusManager.uploadSpeed = spl[2]
                statusManager.uploaded = spl[1]
        return not process.wait()
    except Exception as ex:
        print ex
        return False 
newlines = ['\n', '\r\n', '\r']
def unbuffered(proc, stream='stdout'):
    stream = getattr(proc, stream)
    with contextlib.closing(stream):
        while True:
            out = []
            last = stream.read(1)
            # Don't loop forever
            if last == '' and proc.poll() is not None:
                break
            while last not in newlines:
                # Don't loop forever
                if last == '' and proc.poll() is not None:
                    break
                out.append(last)
                last = stream.read(1)
            out = ''.join(out)
            print out
            yield out
When running with the py2app version I can never get an output. When running as script everything works just fine. ps: this code runs on a separated thread of a Qt app. Does anyone have any idea why this is happening?
 
     
    