ImportError: Kein Modul mit dem Namen 'encodings'

106

Ich habe Ubuntu kürzlich neu installiert und auf 16.04 aktualisiert und kann Python nicht verwenden:

$ 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

Zu diesem Zeitpunkt funktioniert Python selbst nicht

$ 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

Auch dieser Vorschlag funktioniert nicht mehr:

unset PYTHONHOME
unset PYTHONPATH

Jedes Mal, wenn ich es auf eine Weise repariere, kommt es wieder zurück. Mehrere Antworten helfen, das Problem vorübergehend zu beheben, aber nicht für immer. Ich habe Python und Python3 mehrmals neu installiert. Was kann ich von hier aus tun? Danke dir

codyc4321
quelle
Hat das etwas mit Django oder nur mit Python zu tun? Möglicherweise möchten Sie Ihre Frage mit dem entsprechenden Tag bearbeiten.
Moses Koledoye
2
Nur Python, ich benutzte zufällig Django
Codyc4321
Es scheint, dass die Python-Installation unvollständig ist. Haben Sie Python über apt installiert oder haben Sie es aus dem Quellcode kompiliert und installiert? Führen Sie aus which python, um zu überprüfen, welche Python-Binärdatei Sie zuerst in $ PATH haben.
Hal
Haben Sie versucht, Python2 und Python3 über zu deinstallieren und neu zu installieren apt?
Ich bin mit dem Bitnami Django-Stack darauf gestoßen, als ich versucht habe, -r require.txt in einer virtuellen Umgebung zu installieren. Es hat gut funktioniert, ohne die virtuelle Umgebung zu verwenden. Ich habe mir keine Zeit genommen, um herauszufinden, warum dies ein Problem war.
Brad Rhoads

Antworten:

87

Versuchen Sie für Python-3, Dateien der virtuellen Umgebung zu entfernen. Und zurücksetzen.

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

Anoop Malav
quelle
2
Toll! Vielen Dank, dass Sie mir beigebracht haben, wie Sie Python3 mit dem virtualenvBefehl in einer Umgebung installieren ! Aus irgendeinem Grund habe ich ungefähr 2 Monate gebraucht, um es zu finden. Erstaunlich ...
MadPhysicist
2
Hallo, ich habe versucht, dies auf meinem Amazon AMI-Gerät (basierend auf RHEL) zu tun, aber es funktioniert nicht. Kann es auf andere Weise gelöst werden?
Divij Sehgal
1
Als ich den letzten Befehl eingegeben habe, erhalte ich den folgenden Fehler. Können Sie ihn bitte lösen? Die Anforderungsdatei konnte nicht geöffnet werden: [Errno 2] Keine solche Datei oder kein solches Verzeichnis: 'require.txt'
Deepak Chawla
1
@DeepakChawla require.txt sollte in dem pwd vorhanden sein, von dem aus Sie diesen Befehl ausgeben, und es hat nichts mit dem Erstellen von Umgebungen zu tun. Es ist eine Möglichkeit, Pakete im Batch-Modus zu installieren.
Amar
7
Sollte es nicht sein source venv/bin/activate?
Keith
16

Für Windows10-Benutzer.

Ich habe Python3.4 unter Windows 10 verwendet. Ich habe python3.5 installiert. Ich konnte PYTHONPATH, PYTHONHOME env variable nicht finden. Wenn ich Python in der CMD-Konsole befehle, wird weiterhin Python3.4 verwendet. Ich habe python3.4 gelöscht. Immer wenn ich Python in der CMD-Konsole befehle, wird ein Fehler wie unten angezeigt.

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

Ich suchte, um mein Problem herauszufinden. Die Lösung war einfach. Wenn Sie python3.5 installieren, können Sie in den erweiterten Optionen die Option Python zu Umgebungsvariablen hinzufügen installieren und aktivieren .

Ich gehe nur hierher, falls jemand ähnliche Probleme hat, damit er seine kostbare Zeit nicht viel verschwendet, um es herauszufinden.

Jayground
quelle
11

Ich hatte unter Windows 7 das gleiche Problem. Die Fehlermeldung sieht folgendermaßen aus:

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

Current thread 0x000011f4 (most recent call first):

Ich habe Python 2.7 installiert (jetzt deinstalliert) und bei der Installation von Python 3.6 "Python zu Umgebungsvariablen in erweiterten Optionen hinzufügen" aktiviert. Es stellt sich heraus, dass die Umgebungsvariablen " PYTHONHOME " und " PYTHONPATH " immer noch python2.7 sind.

Schließlich löste ich es, indem ich " PYTHONHOME " in den Installationspfad von python3.6 änderte und die Variable " PYTHONPATH " entfernte.

Li Qiao
quelle
9

Für das gleiche Problem unter Windows7

Sie sehen einen solchen Fehler, wenn Ihre Umgebungsvariablen / Systemvariablen falsch eingestellt sind:

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

Current thread 0x00001db4 (most recent call first):

Das zu beheben ist wirklich einfach:

  1. Wenn Sie die Python3.x-Version herunterladen und die EXE-Datei ausführen, können Sie anpassen, wo in Ihrem System Python installiert werden soll. Zum Beispiel habe ich diesen Speicherort ausgewählt: C: \ Programme \ Python36

  2. Öffnen Sie dann die Systemeigenschaften und gehen Sie zur Registerkarte " Erweitert " (oder gehen Sie einfach so: Gehen Sie zu Start> Nach " Umgebungsvariablen suchen "> Klicken Sie auf "Systemumgebungsvariablen bearbeiten".) Suchen Sie auf der Registerkarte "Erweitert" nach "Umgebungsvariablen" und klicken Sie darauf. Ein weiteres Fenster mit dem Namen "Umgebungsvariablen" wird angezeigt.

  3. Stellen Sie nun sicher, dass Ihre Benutzervariablen den richtigen Python-Pfad haben, der unter "Pfadvariable" aufgeführt ist. In meinem Beispiel hier sollte C: \ Programme \ Python36 angezeigt werden . Wenn Sie es dort nicht finden, fügen Sie es hinzu, indem Sie das Feld Pfadvariable auswählen und auf Bearbeiten klicken.

  4. Der letzte Schritt besteht darin, die Felder PYTHONHOME und PYTHONPATH unter Systemvariablen im selben Fenster zu überprüfen . Sie sollten den gleichen Pfad wie oben beschrieben sehen. Wenn nicht, fügen Sie es auch dort hinzu.

Klicken Sie dann auf OK, kehren Sie zum CMD-Terminal zurück und suchen Sie nach Python. Das Problem sollte jetzt behoben sein. Es hat bei mir funktioniert.

dotpy_novice
quelle
Dies ist genau das gleiche auf win10. In meinem Fall wurden nur PYTHONHOME und PYTHONPATH auf eine ältere Installation eingestellt.
Andrés Marafioti
@dotpy_novice Könnten Sie bitte Schritt 4 im Detail hervorheben? Ich hatte keinen Pfad in meinen Benutzervariablen aufgelistet und habe hinzugefügt, wie Sie in Schritt 3 gesagt haben. Jetzt zögere ich etwas, fortzufahren. Es gibt kein PYTHONHOME und PYTHONPATH in Systemvariablen . Soll ich sie selbst erstellen, wenn ja, was soll ich für Variablenname und Variablenwert einfügen ?
bit_scientist
6

Ich hatte diesen Fehler während der Migration auf Ubuntu 17.10 und dies löste das Problem:

sudo dpkg-reconfigure python3

Möglicherweise müssen Sie Ihre Sitzung schließen und die Verbindung wiederherstellen.

numahell
quelle
Ich habe 16.04, dies hat mein Problem nicht gelöst. Ich versuche nur zu verstehen, warum das passiert ist
Xavitoj Cheema
Gleiches Problem unter Ubuntu 16.4. Soll ich Ubuntu neu installieren? /usr/sbin/dpkg-reconfigure: python3 ist kaputt oder nicht komplett installiert
Timo
Auf 18.04 Lubuntu, heißt esFatal Python error: Py_Initialize: Unable to get the locale encoding
Timo
1

Schauen Sie sich /lib/python3.5 an und Sie werden defekte Links zu Python-Bibliotheken sehen. Erstellen Sie es im Arbeitsverzeichnis neu.

Nächster Fehler -

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

wie folgt behoben - /ubuntu/907035/importerror-cannot-import-name-remove-dead-weakref

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

Ich hatte das Problem "ModuleNotFoundError: Kein Modul mit dem Namen 'encodings" nach dem Update auf macOS Catalina.

Ich hatte mehrere Versionen von Python auf meinem System installiert.

Das Entfernen aller Python-Versionen (2.7 und 3.7.4) vom MacOS-System und die Neuinstallation des neuesten Python 3.8 funktionierten für mich.

Um eine Python von macOS zu entfernen, habe ich die Anweisungen hier befolgt. Wie deinstalliere ich Python 2.7 unter Mac OS X 10.6.4?

Der obige Link ist für Python 2.7 und Sie können ihn auch für 3.7 verwenden.

Kondal Kolipaka
quelle
0

Ich hatte ein ähnliches Problem. Ich hatte sowohl Anaconda als auch Python auf meinem Computer installiert und meine Python-Abhängigkeiten stammten aus dem Anaconda-Verzeichnis. Als ich Anaconda deinstallierte, trat dieser Fehler auf. Ich fügte hinzu, PYTHONPATHaber es ging immer noch nicht. Ich erkundigte mich bei python -versionund stellte fest, dass es immer noch den Anakonda-Weg nahm. Ich musste das Anaconda3-Verzeichnis manuell löschen und danach begann Python, Abhängigkeiten von zu übernehmen PYTHONPATH.
Problem gelöst!

Satyam Gaba
quelle
0

Hatte das gleiche Problem beim Aktualisieren meines Mac auf macOS Catalina während der Verwendung pipenv. Pipenv erstellt und verwaltet ein virtualenvfür Sie, daher ist der frühere Vorschlag von @ Anoop-Malav derselbe. Verwenden Sie nur pipenv, um die virtuelle Umgebung basierend auf dem aktuellen Verzeichnis zu entfernen und zurückzusetzen:

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

In meinem Fall hat es funktioniert, nur die Berechtigungen des Anaconda-Ordners zu ändern:

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

Da dies das erste Ergebnis in Google ist, möchte ich nur die folgenden Informationen für alle anderen hinzufügen, die Probleme mit Gefängnissen haben:

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)

Wenn Sie versuchen, Python in Ihr Gefängnis zu importieren, müssen Sie beide die Abhängigkeiten und /usr/lib/pythonX.Y mit [JAIL] / usr / lib / verknüpfen. Hoffe das hilft.

Matt
quelle
Lieber @matt, kannst du bitte die Schritte zum 'Gefängnis' von pythonx.y angeben?
Pranav
@Pranav Ich verwende dieses Skript: gist.github.com/williamhaley/5a499cd7c83aa0e01eaf Sie können dann copy_binary pythonX.Y ausführen und dann die Bibliotheken unter Ihrem echten Stammverzeichnis /usr/lib/pythonX.Y finden, wobei XY Ihre Python-Version ist (For Beispiel Python3.7). Kopiere sie in deine Gefängnisse / usr / lib / und du bist fertig. Prost
Matt
-2

Gehen Sie einfach zu Datei -> Einstellungen -> wählen Sie Projektinterpreter auf der Registerkarte Projekt -> klicken Sie auf das kleine Zahnradsymbol -> Hinzufügen -> Systeminterpreter -> wählen Sie die gewünschte Python-Version im Dropdown-Menü aus

das schien für mich zu funktionieren

Balu B.
quelle
Dies ist nicht sein Problem
NotSoShabby
-12

Ich könnte das auch beheben. PYTHONPATH und PYTHONHOME waren in der Ursache.

Führen Sie dies in einem Terminal aus

   touch ~/.bash_profile
   open ~/.bash_profile

Löschen Sie dann alle nutzlosen Teile dieser Datei und speichern Sie sie. Ich weiß nicht, wie empfehlenswert es ist, das zu tun!

Pber6154
quelle