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


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


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.


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 ".


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.


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ć.


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

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.


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!


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

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   

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


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


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!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.