ImportError: Brak modułu o nazwie „encodings”

106

Niedawno ponownie zainstalowałem Ubuntu i zaktualizowałem do 16.04 i nie mogę używać Pythona:

$ 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

W tym momencie sam Python nie działa

$ 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

Nawet ta sugestia już nie działa:

unset PYTHONHOME
unset PYTHONPATH

Za każdym razem, gdy naprawiam to w jeden sposób, wraca. Kilka odpowiedzi pomaga tymczasowo to naprawić, ale nie na dobre. Kilka razy przeinstalowałem Pythona i Pythona3. Co mogę teraz zrobić? Dziękuję Ci

codyc4321
źródło
Czy jest to związane z Django, czy tylko z Pythonem? Możesz edytować swoje pytanie za pomocą odpowiedniego tagu.
Moses Koledoye
2
tylko python, akurat
używałem
Wygląda na to, że instalacja Pythona jest niekompletna. Czy zainstalowałeś Pythona przez apt, czy też skompilowałeś i zainstalowałeś go ze źródła? Uruchom, which pythonaby sprawdzić, który plik binarny Pythona masz pierwszy w $ PATH.
HAL
Czy próbowałeś odinstalować i ponownie zainstalować zarówno python2, jak i python3 przez apt?
Natknąłem się na to używając stosu Bitnami Django podczas próby zainstalowania pip3 -r requirments.txt int a virtual env. Działało dobrze bez użycia wirtualnego środowiska env. Nie zastanawiałem się, dlaczego to był problem.
Brad Rhoads

Odpowiedzi:

88

W przypadku Python-3 spróbuj usunąć pliki środowiska wirtualnego. I resetowanie go.

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

Anoop Malav
źródło
2
Wspaniały! Dzięki za nauczenie mnie, jak zainstalować python3 w środowisku env za pomocą virtualenvpolecenia! Z jakiegoś powodu znalezienie go zajęło mi około 2 miesięcy. Niesamowite ...
MadPhysicist
2
Cześć, próbowałem to zrobić na moim urządzeniu Amazon AMI (opartym na RHEL), ale to nie działa. Czy można to rozwiązać w inny sposób?
Divij Sehgal
1
kiedy wpisałem ostatnią komendę, daje mi to poniższy błąd, czy możesz rozwiązać ... Nie można otworzyć pliku wymagań: [Errno 2] Nie ma takiego pliku lub katalogu: 'Requirements.txt'
Deepak Chawla
1
@DeepakChawla requirements.txt powinien znajdować się w pwd, skąd wydajesz to polecenie i nie ma to nic wspólnego z tworzeniem środowiska, jest to sposób na instalację pakietów w trybie wsadowym.
Amar
7
Nie powinno być source venv/bin/activate?
Keith,
16

Dla użytkownika Windows10.

Używałem python3.4 na Windows10. Zainstalowałem python3.5. Nie mogę znaleźć zmiennej env PYTHONPATH, PYTHONHOME. Jeśli polecę pythonowi w konsoli CMD, nadal używa python3.4. Usunąłem Pythona3.4. Za każdym razem, gdy komendę python w konsoli CMD, zaczyna pokazywać błąd jak poniżej.

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

Szukałem, aby rozwiązać mój problem. Rozwiązanie było proste. Kiedy instalujesz python 3.5, możesz zainstalować niestandardową i zaznaczyć opcję Dodaj Python do zmiennych środowiskowych w Opcjach zaawansowanych.

Po prostu zostawiam tutaj na wypadek, gdyby ktoś miał tutaj podobne problemy, aby nie tracić cennego czasu na to.

Jayground
źródło
11

Miałem ten sam problem pod Windows7. Komunikat o błędzie wygląda tak:

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

Current thread 0x000011f4 (most recent call first):

Zainstalowałem Pythona 2.7 (odinstalowałem teraz) i zaznaczyłem „Dodaj Pythona do zmiennych środowiskowych w Opcjach zaawansowanych” podczas instalowania Pythona 3.6. Okazuje się, że zmienna środowiskowa „ PYTHONHOME ” i „ PYTHONPATH ” to nadal python2.7.

W końcu rozwiązałem to, modyfikując " PYTHONHOME " do ścieżki instalacji python3.6 i usuwając zmienną " PYTHONPATH ".

Li Qiao
źródło
9

W przypadku tego samego problemu w systemie Windows7

Zobaczysz taki błąd, jeśli twoje zmienne środowiskowe / zmienne systemowe są nieprawidłowo ustawione:

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

Current thread 0x00001db4 (most recent call first):

Naprawienie tego jest naprawdę proste:

  1. Gdy pobierzesz wersję Python3.x i uruchomisz plik .exe, daje to możliwość dostosowania miejsca w systemie, w którym chcesz zainstalować Python. Na przykład wybrałem tę lokalizację: C: \ Program Files \ Python36

  2. Następnie otwórz właściwości systemu i przejdź do zakładki „ Zaawansowane ” (lub możesz to zrobić po prostu: Przejdź do Start> Wyszukaj „ zmienne środowiskowe ”> Kliknij „Edytuj zmienne środowiskowe systemu”). Na karcie „Zaawansowane” znajdź „Zmienne środowiskowe” i kliknij je. Pojawi się kolejne okno o nazwie „Zmienne środowiskowe”.

  3. Teraz upewnij się, że zmienne użytkownika mają poprawną ścieżkę Pythona wymienioną w „Zmienna ścieżki”. W moim przykładzie tutaj powinieneś zobaczyć C: \ Program Files \ Python36 . Jeśli go tam nie znajdziesz, dodaj, zaznaczając pole Zmienna ścieżki i klikając Edytuj.

  4. Ostatnim krokiem jest dwukrotne sprawdzenie pól PYTHONHOME i PYTHONPATH w Zmiennych systemowych w tym samym oknie. Powinieneś zobaczyć tę samą ścieżkę, jak opisano powyżej. Jeśli nie, dodaj go też.

Następnie kliknij OK i wróć do terminala CMD i spróbuj sprawdzić, czy jest Python. Problem powinien teraz zostać rozwiązany. U mnie to zadziałało.

dotpy_novice
źródło
To jest dokładnie to samo na win10. W moim przypadku był to tylko PYTHONHOME i PYTHONPATH ustawione na starszą instalację.
Andrés Marafioti
@dotpy_novice Czy mógłbyś szczegółowo podkreślić krok 4? Nie miałem żadnej ścieżki wymienionej w moich zmiennych użytkownika i dodałem, jak powiedziałeś w kroku 3. Teraz trochę się waham, czy kontynuować. W zmiennych systemowych nie ma PYTHONHOME i PYTHONPATH . Czy powinienem sam je utworzyć, a jeśli tak, co wstawić w polu Nazwa zmiennej i Wartość zmiennej ?
bit_scientist
6

Miałem ten błąd podczas migracji do Ubuntu 17.10, a to rozwiązało problem:

sudo dpkg-reconfigure python3

Może będziesz musiał zamknąć sesję i ponownie się połączyć.

numahell
źródło
Mam 16.04, to nie rozwiązało mojego problemu. Po prostu próbuję zrozumieć, dlaczego tak się stało
Xavitoj Cheema
Ten sam problem na Ubuntu 16.4. Czy powinienem ponownie zainstalować Ubuntu? /usr/sbin/dpkg-reconfigure: python3 ist kaputt oder nicht komplett installiert
Timo,
Dalej 18.04 Lubuntujest napisaneFatal Python error: Py_Initialize: Unable to get the locale encoding
Timo,
1

Spójrz na /lib/python3.5, a zobaczysz zepsute łącza do bibliotek Pythona. Odtwórz go w katalogu roboczym.

Następny błąd -

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

naprawiono w ten sposób - /ubuntu/907035/importerror-cannot-import-name-remove-dead-weakref

cd my-virtualenv-directory
virtualenv . --system-site-packages
IvanTheFirst
źródło
1

Miałem do czynienia z problemem „ModuleNotFoundError: Brak modułu o nazwie„ encodings ”po aktualizacji do macOS Catalina.

Miałem wiele wersji Pythona zainstalowanych w moim systemie.

Usunięcie wszystkich wersji Pythona (2.7 i 3.7.4) z systemu macOS i ponowna instalacja najnowszego Pythona 3.8 działało dla mnie.

Aby usunąć Pythona z macOS, postępowałem zgodnie z instrukcjami tutaj. Jak odinstalować Python 2.7 na Mac OS X 10.6.4?

Powyższy link dotyczy Pythona 2.7, ale możesz go użyć również dla 3.7.

Kondal Kolipaka
źródło
0

Miałem podobny problem. Na moim komputerze zainstalowano zarówno anacondę, jak i python, a moje zależności Pythona pochodziły z katalogu Anaconda. Kiedy odinstalowałem Anacondę, ten błąd zaczął się pojawiać. Dodałem, PYTHONPATHale nadal nie poszło. Sprawdziłem python -versioni dowiedziałem się, że nadal podąża ścieżką anakondy. Musiałem ręcznie usunąć katalog Anaconda3 i po tym Python zaczął pobierać zależności z PYTHONPATH.
Problem rozwiązany!

Satyam Gaba
źródło
0

Miałem ten sam problem podczas aktualizowania mojego Maca do macOS Catalina podczas używania pipenv. Pipenv tworzy i zarządza virtualenvza Ciebie, więc wcześniejsza sugestia @ Anoop-Malav jest taka sama, wystarczy użyć pipenv do usunięcia środowiska wirtualnego w oparciu o bieżący katalog i zresetuj go:

pipenv --rm
pipenv shell  # recreate a virtual env with your current Pipfile
qix
źródło
0

W moim przypadku zadziałała tylko zmiana uprawnień do folderu anaconda:

sudo chmod -R u=rwx,g=rx,o=rx /path/to/anaconda   
Apogentus
źródło
-1

Ponieważ jest to pierwszy wynik w Google, chcę tylko dodać następujące informacje dla każdego, kto ma problemy z więzieniami:

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)

Próbując zaimportować Pythona do więzienia, musicie połączyć zależności i /usr/lib/pythonX.Y z [JAIL] / usr / lib /. Mam nadzieję że to pomoże.

Matt
źródło
Drogi @matt, czy możesz podać instrukcje „więzienia” pythonx.y?
Pranav
@Pranav Używam tego skryptu: gist.github.com/williamhaley/5a499cd7c83aa0e01eaf możesz następnie uruchomić copy_binary pythonX.Y, a następnie znaleźć biblioteki w Twoim prawdziwym katalogu głównym /usr/lib/pythonX.Y, gdzie XY to twoja wersja pythona (For przykład python3.7). Skopiuj je do swoich jails / usr / lib / i gotowe. Pozdrawiam
Matt
-2

Po prostu przejdź do Plik -> Ustawienia -> wybierz Interpreter projektu w zakładce Projekt -> kliknij małą ikonę koła zębatego -> Dodaj -> Interpreter systemu -> wybierz żądaną wersję Pythona z menu rozwijanego

to wydawało się działać dla mnie

Balu B
źródło
to nie jest jego problem
NotSoShabby
-12

Mógłbym też to naprawić. PYTHONPATH i PYTHONHOME były przyczyną.

uruchom to w terminalu

   touch ~/.bash_profile
   open ~/.bash_profile

a następnie usuń wszystkie niepotrzebne części tego pliku i zapisz. Nie wiem, jak to jest zalecane!

Pber6154
źródło