ImportError: ningún módulo llamado 'codificaciones'

106

Recientemente reinstalé ubuntu y actualicé a 16.04 y no puedo usar python:

$ python manage.py runserver
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Aborted

En este punto, Python en sí no funciona

$ python
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Aborted

Incluso esta sugerencia ya no funciona:

unset PYTHONHOME
unset PYTHONPATH

Cada vez que lo arreglo de una manera, vuelve de nuevo. Varias respuestas ayudan a solucionarlo temporalmente, pero no para siempre. He reinstalado python y python3 varias veces. ¿Qué puedo hacer desde aquí? Gracias

codyc4321
fuente
¿Esto está relacionado con Django o solo con Python? Es posible que desee editar su pregunta con la etiqueta adecuada.
Moses Koledoye
2
solo Python, estaba usando django
codyc4321
Parece que la instalación de Python está incompleta. ¿Ha instalado Python a través de apt o lo ha compilado e instalado desde la fuente? Ejecute which pythonpara verificar qué binario de Python tiene primero en $ PATH.
HAL
¿Ha intentado desinstalar y reinstalar python2 y python3 a través de apt?
Me encontré con esto usando la pila Bitnami Django cuando intentaba pip3 install -r requirments.txt en un entorno virtual. Funcionó bien sin usar el entorno virtual. No me he tomado el tiempo para averiguar por qué esto era un problema.
Brad Rhoads

Respuestas:

87

Para Python-3, intente eliminar los archivos del entorno virtual. Y restableciéndolo.

rm -rf venv
virtualenv -p /usr/bin/python3 venv/
source venv/bin/activate
pip install -r requirements.txt

https://wiki.ubuntu.com/XenialXerus/ReleaseNotes#Python_3 editar fo

Anoop Malav
fuente
2
¡Excelente! ¡Gracias por enseñarme cómo instalar python3 en un env usando el virtualenvcomando! Por alguna razón, me tomó alrededor de 2 meses encontrarlo. Amazing ...
MadPhysicist
2
Hola, intenté hacer esto en mi dispositivo Amazon AMI (basado en RHEL) pero no funciona. ¿De alguna otra forma se puede solucionar?
Divij Sehgal
1
cuando ingresé el último comando, me da el siguiente error, ¿puede resolverlo? No se pudo abrir el archivo de requisitos: [Errno 2] No existe ese archivo o directorio: 'requirements.txt'
Deepak Chawla
1
@DeepakChawla requirements.txt debe estar presente en el pwd desde donde está emitiendo este comando y no tiene nada que ver con la creación del entorno, es una forma de instalar paquetes en modo por lotes.
Amar
7
¿No debería serlo source venv/bin/activate?
Keith
16

Para usuarios de Windows10.

Estaba usando python3.4 en Windows10. Instalé python3.5. No pude encontrar la variable env de PYTHONPATH, PYTHONHOME. Si ordeno python en la consola CMD, siguió usando python3.4. Eliminé python3.4. Siempre que ordeno python en la consola CMD, comienza a mostrar un error como el siguiente.

Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'

Busqué para resolver mi problema. La solución fue simple. Cuando instala python3.5, puede realizar una instalación personalizada y marcar Agregar Python a las variables de entorno en Opciones avanzadas.

Lo dejo aquí para el caso de que alguien tenga problemas similares, visite aquí para que no pierda mucho su valioso tiempo para averiguarlo.

Jayground
fuente
11

Estaba enfrentando el mismo problema en Windows7. El mensaje de error se ve así:

Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x000011f4 (most recent call first):

He instalado Python 2.7 (desinstalado ahora), y marqué "Agregar Python a las variables de entorno en Opciones avanzadas" mientras instalaba Python 3.6. Resulta que la variable de entorno " PYTHONHOME " y " PYTHONPATH " sigue siendo python2.7.

Finalmente lo resolví modificando " PYTHONHOME " a la ruta de instalación de python3.6 y eliminé la variable " PYTHONPATH ".

Li Qiao
fuente
9

Para el mismo problema en Windows7

Verá un error como este si sus variables de entorno / variables de sistema están configuradas incorrectamente:

Fatal Python error: Py_Initialize: unable to load the file system codec
ImportError: No module named 'encodings'

Current thread 0x00001db4 (most recent call first):

Arreglar esto es realmente simple:

  1. Cuando descarga la versión Python3.x y ejecuta el archivo .exe, le da la opción de personalizar en qué parte de su sistema desea instalar Python. Por ejemplo, elegí esta ubicación: C: \ Archivos de programa \ Python36

  2. Luego, abra las propiedades del sistema y vaya a la pestaña " Avanzado " (O simplemente puede hacer esto: Vaya a Inicio> Buscar " variables de entorno "> Haga clic en "Editar las variables de entorno del sistema"). En la pestaña "Avanzado", busque "Variables de entorno" y haga clic en él. Aparecerá otra ventana con el nombre "Variables de entorno".

  3. Ahora asegúrese de que sus variables de usuario tengan la ruta correcta de Python listada en "Variable de ruta". En mi ejemplo aquí, debería ver C: \ Archivos de programa \ Python36 . Si no lo encuentra allí, agréguelo seleccionando el campo Variable de ruta y haciendo clic en Editar.

  4. El último paso es volver a verificar los campos PYTHONHOME y PYTHONPATH en Variables del sistema en la misma ventana. Debería ver la misma ruta que se describe anteriormente. Si no, agréguelo allí también.

Luego haga clic en Aceptar y vuelva a la terminal CMD, e intente verificar si hay Python. El problema debería resolverse ahora. Funcionó para mí.

dotpy_novice
fuente
Esto es exactamente lo mismo en win10. En mi caso, solo PYTHONHOME y PYTHONPATH se establecieron en una instalación anterior.
Andrés Marafioti
@dotpy_novice ¿Podría resaltar el paso 4 en detalle? No tenía ninguna ruta listada en mis variables de usuario y agregué como dijiste en el paso 3. Ahora estoy un poco indeciso para continuar. No hay PYTHONHOME ni PYTHONPATH en las variables del sistema. ¿Debería crearlos yo mismo? En caso afirmativo, ¿qué debería insertar para el nombre y el valor de la variable ?
bit_scientist
6

Tuve este error durante la migración a Ubuntu 17.10, y esto resolvió el problema:

sudo dpkg-reconfigure python3

Tal vez tenga que cerrar su sesión y volver a conectarse.

numahell
fuente
Tengo 16.04, esto no resolvió mi problema. Solo estoy tratando de entender, ¿por qué sucedió esto?
Xavitoj Cheema
El mismo problema en ubuntu 16.4 .. ¿Debo reinstalar Ubuntu? /usr/sbin/dpkg-reconfigure: python3 ist kaputt oder nicht komplett installiert
Timo
Encendido 18.04 Lubuntu, diceFatal Python error: Py_Initialize: Unable to get the locale encoding
Timo
1

Mire /lib/python3.5 y verá enlaces rotos a bibliotecas de Python. Vuelva a crearlo en el directorio de trabajo.

Siguiente error -

./script/bin/pip3
Failed to import the site module
Traceback (most recent call last):
  File "/home/script/script/lib/python3.5/site.py", line 703, in <module>
    main()
  File "/home/script/script/lib/python3.5/site.py", line 683, in main
    paths_in_sys = addsitepackages(paths_in_sys)
  File "/home/script/script/lib/python3.5/site.py", line 282, in addsitepackages
    addsitedir(sitedir, known_paths)
  File "/home/script/script/lib/python3.5/site.py", line 204, in addsitedir
    addpackage(sitedir, name, known_paths)
  File "/home/script/script/lib/python3.5/site.py", line 173, in addpackage
    exec(line)
  File "<string>", line 1, in <module>
  File "/home/script/script/lib/python3.5/types.py", line 166, in <module>
    import functools as _functools
  File "/home/script/script/lib/python3.5/functools.py", line 23, in <module>
    from weakref import WeakKeyDictionary
  File "/home/script/script/lib/python3.5/weakref.py", line 12, in <module>
    from _weakref import (
ImportError: cannot import name '_remove_dead_weakref'

arreglado así: /ubuntu/907035/importerror-cannot-import-name-remove-dead-weakref

cd my-virtualenv-directory
virtualenv . --system-site-packages
IvanTheFirst
fuente
1

Me enfrentaba a este problema "ModuleNotFoundError: ningún módulo llamado 'codificaciones" después de actualizar a macOS Catalina.

Tenía varias versiones de Python instaladas en mi sistema.

Eliminar todas las versiones de Python (2.7 y 3.7.4) del sistema macOS y reinstalar la última versión de Python 3.8 funcionó para mí.

Para eliminar una Python de macOS, he seguido las instrucciones de aquí ¿Cómo desinstalar Python 2.7 en Mac OS X 10.6.4?

El enlace anterior es para Python 2.7 y también puede usar el mismo para 3.7.

Kondal Kolipaka
fuente
0

Tuve un problema similar. Tenía tanto Anaconda como Python instalados en mi computadora y mis dependencias de Python eran del directorio Anaconda. Cuando desinstalé Anaconda, este error comenzó a aparecer. Agregué PYTHONPATHpero todavía no funcionó. Lo verifiqué python -versiony fui a saber que todavía estaba tomando el camino de la anaconda. Tuve que eliminar manualmente el directorio Anaconda3 y, después de eso, Python comenzó a tomar dependencias de PYTHONPATH.
¡Problema resuelto!

Satyam Gaba
fuente
0

Tuve el mismo problema al actualizar mi mac a macOS Catalina, mientras usaba pipenv. Pipenv crea y administra un virtualenvpor usted, por lo que la sugerencia anterior de @ Anoop-Malav es la misma, simplemente usando pipenv para eliminar el entorno virtual basado en el directorio actual y restablecerlo:

pipenv --rm
pipenv shell  # recreate a virtual env with your current Pipfile
qix
fuente
0

En mi caso, solo funcionó cambiar los permisos de la carpeta anaconda:

sudo chmod -R u=rwx,g=rx,o=rx /path/to/anaconda   
Apogentus
fuente
-1

Debido a que este es el primer resultado en Google, solo quiero agregar la siguiente información para cualquier otra persona que tenga problemas con las cárceles:

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007f079b16d740 (most recent call first):
Aborted (core dumped)

Cuando intente importar Python a su cárcel, ambos deben vincular las dependencias y /usr/lib/pythonX.Y a [JAIL] / usr / lib /. Espero que esto ayude.

Mate
fuente
Estimado @matt, ¿puede proporcionar los pasos para 'encarcelar' a pythonx.y?
Pranav
@Pranav Estoy usando este script: gist.github.com/williamhaley/5a499cd7c83aa0e01eaf luego puede ejecutar copy_binary pythonX.Y y luego encontrar las bibliotecas en su raíz real /usr/lib/pythonX.Y donde XY es su versión de Python (para ejemplo python3.7). Cópielos en sus jails / usr / lib / y listo. Saludos
Matt
-2

Simplemente vaya a Archivo -> Configuración -> seleccione Intérprete del proyecto en la pestaña Proyecto -> haga clic en el ícono de engranaje pequeño -> Agregar -> Intérprete del sistema -> seleccione la versión de Python que desee en el menú desplegable

esto pareció funcionar para mí

Balu B
fuente
este no es su problema
NotSoShabby
-12

También podría arreglar esto. PYTHONPATH y PYTHONHOME estaban en la causa.

ejecutar esto en una terminal

   touch ~/.bash_profile
   open ~/.bash_profile

y luego elimine todas las partes inútiles de este archivo y guarde. ¡No sé qué tan recomendable es hacer eso!

Pber6154
fuente