es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué pipenv está obteniendo un UnicodeDecodeError?

Problema

Estoy tratando de iniciar un entorno virtual con una variable de entorno usando pipenv. Estos son los pasos que seguí:

  • Creé un entorno virtual de pipenv
  • Ejecuté echo ENV_VAR=my_token > .env
  • Inicié el entorno virtual ejecutando pipenv shell

Cuando ejecuté ese último comando, recibí el siguiente error:

UnicodeDecodeError: El códec 'utf-8' no puede descodificar el byte 0xff en la posición 0: byte de inicio no válido

Estoy utilizando PowerShell en Windows 10.

Pregunta

¿Por qué podría estar sucediendo esto? Claramente hay algún carácter extraño ahí, pero estoy usando un teclado normal.

Contexto

Si simplemente creo mi archivo .env en su lugar, todo funciona como se espera. ¿Hay algo extraño que sucede con echo?

Adicional

Según lo solicitado por Giacomo Catenazzi a continuación, he revisado el archivo usando Notepad++. Está en formato UTF-16 BOM. Por lo tanto, el comando de echo simplemente no funciona adecuadamente con PowerShell para escribir en UTF-8.

error

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema se debe a la codificación del archivo de texto creado por el comando echo. Por defecto, en Windows, el comando echo crea un archivo de texto codificado en UTF-16 con un carácter de marca de orden de bytes (BOM) al principio. Esta codificación no es compatible con el shell de pipenv, que espera que la codificación sea UTF-8 sin BOM.

    Para resolver el problema, hay un par de opciones:

    • Utilice un editor de texto que le permita guardar archivos de texto en codificación UTF-8 sin BOM. Por ejemplo, puede utilizar Notepad++ o Visual Studio Code para crear el archivo .env.
    • Utilice el comando Set-Content de PowerShell para crear el archivo .env:

    Set-Content -Path .env -Value "ENV_VAR=my_token" -Encoding utf8
    

    Este comando creará el archivo .env con codificación UTF-8 sin BOM, que el shell de pipenv puede leer sin problema.

    Nota: Si desea comprobar la codificación del archivo, puede utilizar un editor de texto como Notepad++ o Visual Studio Code para abrir el archivo y comprobar la codificación. Si la codificación no es correcta, puede guardar el archivo con la codificación correcta seleccionando Archivo -> Guardar como y eligiendo la codificación correcta.

Comments are closed.