ImportError: nessun modulo denominato "encodings"


106

Di recente ho reinstallato Ubuntu e ho eseguito l'aggiornamento a 16.04 e non posso usare 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

A questo punto, Python stesso non funziona

$ 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

Anche questo suggerimento non funziona più:

unset PYTHONHOME
unset PYTHONPATH

Ogni volta che lo aggiusto in un modo, torna di nuovo. Diverse risposte aiutano a risolverlo temporaneamente, ma non per sempre. Ho reinstallato più volte python e python3. Cosa posso fare da qui? Grazie


È correlato a Django o solo a Python? Potresti voler modificare la tua domanda con il tag appropriato.
Moses Koledoye

2
solo python, mi è capitato di usare django
codyc4321

Sembra che l'installazione di Python sia incompleta. Hai installato python tramite apt o l'hai compilato e installato dai sorgenti? Esegui which pythonper verificare quale binario Python hai per primo in $ PATH.
HAL

Hai provato a disinstallare e reinstallare sia python2 che python3 tramite apt?

Mi sono imbattuto in questo utilizzando lo stack Bitnami Django durante il tentativo di pip3 install -r requirments.txt in un ambiente virtuale. Ha funzionato bene senza utilizzare l'ambiente virtuale. Non ho perso tempo per capire perché questo era un problema.
Brad Rhoads

Risposte:


88

Per Python-3 prova a rimuovere i file dell'ambiente virtuale. E resettarlo.

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 modifica fo


2
Grande! Grazie per avermi insegnato come installare python3 in un env usando il virtualenvcomando! Per qualche motivo, mi ci sono voluti circa 2 mesi per trovarlo. Incredibile ...
MadPhysicist

2
Ciao, ho provato a farlo sul mio dispositivo Amazon AMI (basato su RHEL) ma non funziona. In qualche altro modo può essere risolto?
Divij Sehgal

1
quando ho inserito l'ultimo comando mi dà l'errore di seguito, puoi risolvere ... Impossibile aprire il file dei requisiti: [Errno 2] Nessun file o directory di questo tipo: 'requirements.txt'
Deepak Chawla

1
@DeepakChawla requirements.txt dovrebbe essere presente nel pwd da cui stai emettendo questo comando e non ha nulla a che fare con la creazione dell'ambiente, è un modo per installare i pacchetti in modalità batch.
Amar

7
Non dovrebbe essere source venv/bin/activate?
Keith

16

Per utenti Windows10.

Stavo usando python3.4 su Windows10. Ho installato python3.5. Non sono riuscito a trovare PYTHONPATH, variabile env PYTHONHOME. Se comando python nella console CMD, continuava a utilizzare python3.4. Ho eliminato python3.4. Ogni volta che comando python nella console CMD, inizia a mostrare un errore come di seguito.

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

Ho cercato di capire il mio problema. La soluzione era semplice. Quando installi python3.5, puoi eseguire l'installazione personalizzata e selezionare Aggiungi Python alle variabili d'ambiente nelle Opzioni avanzate.

Lascio qui solo per il caso in cui qualcuno abbia problemi simili visita qui in modo che non sprechino molto tempo prezioso per capirlo.


11

Stavo affrontando lo stesso problema con Windows7. Il messaggio di errore ha questo aspetto:

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

Current thread 0x000011f4 (most recent call first):

Ho installato python 2.7 (ora disinstallato) e ho selezionato "Aggiungi Python alle variabili di ambiente in Opzioni avanzate" durante l'installazione di python 3.6. Viene fuori che la variabile d'ambiente " PYTHONHOME " e " PYTHONPATH " è ancora python2.7.

Alla fine l'ho risolto modificando " PYTHONHOME " nel percorso di installazione di python3.6 e rimuovendo la variabile " PYTHONPATH ".


9

Per lo stesso problema su Windows7

Vedrai un errore come questo se le tue variabili di ambiente / variabili di sistema sono impostate in modo errato:

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

Current thread 0x00001db4 (most recent call first):

Risolvere questo problema è davvero semplice:

  1. Quando scarichi la versione Python3.x ed esegui il file .exe, ti offre un'opzione per personalizzare la posizione nel tuo sistema in cui desideri installare Python. Ad esempio, ho scelto questa posizione: C: \ Program Files \ Python36

  2. Quindi apri le proprietà di sistema e vai alla scheda " Avanzate " (oppure puoi semplicemente farlo: vai su Start> Cerca " variabili di ambiente "> fai clic su "Modifica le variabili di ambiente di sistema".) Nella scheda "Avanzate", cerca "Variabili d'ambiente" e fare clic su di esso. Apparirà un'altra finestra con il nome "Variabili d'ambiente".

  3. Ora assicurati che le tue variabili utente abbiano il percorso Python corretto elencato in "Variabile di percorso". Nel mio esempio qui, dovresti vedere C: \ Program Files \ Python36 . Se non lo trovi lì, aggiungilo selezionando il campo Variabile di percorso e facendo clic su Modifica.

  4. L'ultimo passaggio consiste nel ricontrollare i campi PYTHONHOME e PYTHONPATH in Variabili di sistema nella stessa finestra. Dovresti vedere lo stesso percorso descritto sopra. In caso contrario, aggiungilo anche lì.

Quindi fare clic su OK e tornare al terminale CMD e provare a verificare la presenza di python. Il problema dovrebbe ora essere risolto. Ha funzionato per me.


Questo è esattamente lo stesso su win10. Nel mio caso si trattava solo di PYTHONHOME e PYTHONPATH impostati su un'installazione precedente.
Andrés Marafioti

@dotpy_novice Potresti evidenziare il passaggio 4 in dettaglio? Non avevo alcun percorso elencato nelle mie variabili utente e ho aggiunto come hai detto nel passaggio 3. Ora sono un po 'titubante a procedere. Non ci sono PYTHONHOME e PYTHONPATH nelle variabili di sistema. Devo crearli da solo, se sì, cosa devo inserire per Nome variabile e Valore variabile ?
bit_scientist

6

Ho riscontrato questo errore durante la migrazione a Ubuntu 17.10 e questo ha risolto il problema:

sudo dpkg-reconfigure python3

Forse dovrai chiudere la sessione e riconnetterti.


Ho 16.04, questo non ha risolto il mio problema. Sto solo cercando di capire perché è successo
Xavitoj Cheema

Stesso problema su Ubuntu 16.4 .. Devo reinstallare Ubuntu? /usr/sbin/dpkg-reconfigure: python3 ist kaputt oder nicht komplett installiert
Timo

Su 18.04 Lubuntu, diceFatal Python error: Py_Initialize: Unable to get the locale encoding
Timo

1

Guarda /lib/python3.5 e vedrai collegamenti interrotti alle librerie python. Ricrearlo nella directory di lavoro.

Errore successivo -

./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'

risolto in questo modo - /ubuntu/907035/importerror-cannot-import-name-remove-dead-weakref

cd my-virtualenv-directory
virtualenv . --system-site-packages

1

Stavo affrontando questo problema "ModuleNotFoundError: nessun modulo denominato" encodings "dopo l'aggiornamento a macOS Catalina.

Avevo più versioni di Python installate nel mio sistema.

La rimozione di tutte le versioni di python (2.7 e 3.7.4) dal sistema macOS e la reinstallazione dell'ultimo python 3.8 ha funzionato per me.

Per rimuovere un python da macOS, ho seguito le istruzioni da qui Come disinstallare Python 2.7 su un Mac OS X 10.6.4?

Il collegamento sopra è per Python 2.7 e puoi usare lo stesso anche per 3.7.


0

Ho avuto un problema simile. Avevo sia anaconda che python installati sul mio computer e le mie dipendenze python provenivano dalla directory Anaconda. Quando ho disinstallato Anaconda, questo errore ha iniziato a comparire. Ho aggiunto PYTHONPATHma ancora non è andato. Ho controllato python -versione vado a sapere che stava ancora prendendo il sentiero dell'anaconda. Ho dovuto eliminare manualmente la directory Anaconda3 e dopo che Python ha iniziato a prendere dipendenze da PYTHONPATH.
Problema risolto!


0

Ho avuto lo stesso problema durante l'aggiornamento del mio mac a macOS Catalina, durante l'utilizzo pipenv. Pipenv crea e gestisce un virtualenvper te, quindi il suggerimento precedente di @ Anoop-Malav è lo stesso, basta usare pipenv per rimuovere l'ambiente virtuale basato sulla directory corrente e ripristinarlo:

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

0

Nel mio caso ha funzionato solo la modifica delle autorizzazioni della cartella anaconda:

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

-1

Poiché questo è il primo risultato in Google, voglio solo aggiungere le seguenti informazioni per chiunque abbia problemi con le carceri:

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)

Quando si tenta di importare python nella propria prigione, è necessario collegare entrambi le dipendenze e /usr/lib/pythonX.Y a [JAIL] / usr / lib /. Spero che questo ti aiuti.


Caro @matt, puoi fornire i passaggi per 'jail' pythonx.y?
Pranav

@Pranav Sto usando questo script: gist.github.com/williamhaley/5a499cd7c83aa0e01eaf puoi quindi eseguire copy_binary pythonX.Y quindi trova le librerie sotto la tua vera radice /usr/lib/pythonX.Y dove XY è la tua versione di python (per esempio python3.7). Copiali nelle tue jail / usr / lib / e sei pronto. Saluti
Matt

-2

Vai su File -> Impostazioni -> seleziona Project Interpreter nella scheda Project -> fai clic sull'icona a forma di ingranaggio -> Aggiungi -> System Interpreter -> seleziona la versione di Python che desideri nel menu a discesa

questo sembrava funzionare per me


questo non è il suo problema
NotSoShabby

-12

Potrei anche risolvere questo problema. PYTHONPATH e PYTHONHOME erano in causa.

eseguilo in un terminale

   touch ~/.bash_profile
   open ~/.bash_profile

quindi elimina tutte le parti inutili di questo file e salva. Non so quanto sia consigliato farlo!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.