Tuve este problema al usar Python dentro de un contenedor Docker basado en Ubuntu 18.04. Parecía ser un problema de configuración regional, que se resolvió agregando lo siguiente al Dockerfile:
ENV LANG C.UTF-8
Parece que su ubicación está rota y tiene otros bytes->problema de Unicode . Lo que hiciste para Python 2.7 es un truco que solo enmascaró el problema real (hay una razón por la que tienes que reload sys
para que funcione).
Para corregir su configuración regional, intente escribir locale
desde la línea de comandos. Debería verse algo como:
LANG=en_GB.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_ALL=
locale
depende de LANG
siendo configurado correctamente. Python usa efectivamente locale
para averiguar qué codificación usar al escribir en la salida estándar. Si no funciona, el valor predeterminado es ASCII.
Primero debe intentar corregir su configuración regional. Si locale
errores, asegúrese de haber instalado el paquete de idioma correcto para su región.
Si todo lo demás falla, siempre puedes arreglar Python configurando PYTHONIOENCODING=UTF-8
. Esto debe usarse como último recurso, ya que estará enmascarando los problemas una vez más.
Si Python sigue arrojando un error después de configurar PYTHONIOENCODING
entonces actualice su pregunta con stacktrace. Lo más probable es que tenga una conversión implícita en curso.