Python Popen falha ao usar a codificação adequada no Windows PowerShell

Estou executando meu script Python no Windows PowerShell, e o script deve executar outro programa usando o Popen e canalizar a saída desse programa (Mercurial, na verdade) para uso no meu script. Estou recebendo um erro de codificação quando tento executar meu script no PowerShell.

Tenho certeza de que isso está acontecendo porque o Python não está usando a codificação correta que o PowerShell está usando ao obter a saída da chamada Popen. O problema é que não sei dizer ao Python para usar a codificação corret

O meu script parece

# -*- coding: utf-8 -*-
#... some imports
proc = Popen(["hg", "--cwd", self.path, "--encoding", "UTF-8"] + list(args), stdout=PIPE, stderr=PIPE)
#... other code

Quando executo esse script no Linux, não tenho mais nenhum problema. Também posso executar o script no Windows 7 Home Premium de 64 bits usando o PowerShell sem problemas. O PowerShell neste Windows 7 está usando a página de código 850, ou seja, a saída dechcp é850 ("ibm850").

Contud, quando executo o script em umWindows 7 Starter 32 bits usando um PowerShell que possui por padrão a codificação cp437 chcp = 437), Recebo o seguinte erro do Python (versão 2.7.2):

File "D:\Path\to\myscript.py", line 55, in hg_command
    proc = Popen(["hg", "--cwd", self.path, "--encoding", "UTF-8"] + list(args), stdout=PIPE, stderr=PIPE)
File "C:\Program files\Python27\lib\subprocess.py", line 679, in __init__
    errread, errwrite)
File "C:\Program files\Python27\lib\subprocess.py", line 852, in _execute_child
    args = list2cmdline(args)
File "C:\Program files\Python27\lib\subprocess.py", line 615, in list2cmdline
    return ''.join(result)
UnicodeDecodeError: 'utf8' codec cant decode byte 0xe3 in position 0: unexpected end of data

Tentei o seguinte, sem êxito (ou seja, o relatório de erro acima permanece o mesmo):

Remova a linha# -*- coding: utf-8 -*- do meu script.Remova o-- encoding UTF-8 opção para executar o Mercurial através do Popen no meu scripAltere a codificação parachcp 850 no PowerShell antes de executar meu script. Muitos outros hacks Python diversos que encontrei em outras respostas do Stack Overflo

Para meus detalhes específicos, todo o meu código-fonte está disponívelaqui no BitBucket. hgapi.py é o script que fornece o erro.

ATUALIZAR O script está sendo chamado por esteother script, que está definindo a codificação como esta

sys.setdefaultencoding("utf-8")

Esta linha parece importante, porque se eu comentar, recebo um erro diferente:

UnicodeDecoreError: 'ascii' codec cant decode byte 0xe3 in position 0: ordinal not in range(128)

questionAnswers(4)

yourAnswerToTheQuestion