ImportError: Немає модуля з назвою "кодування"


106

Нещодавно я перевстановив ubuntu і зробив оновлення до 16.04 і не можу використовувати 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

На даний момент сам пітон не працює

$ 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

Навіть ця пропозиція більше не працює:

unset PYTHONHOME
unset PYTHONPATH

Кожен кожний я виправляю це в один бік, він повертається знову. Кілька відповідей допомагають виправити це тимчасово, але не на добре. Я кілька разів перевстановлював python та python3. Що я можу зробити звідси? Дякую


Це пов’язано з Джанго чи просто Python? Ви можете відредагувати своє питання відповідним тегом.
Мойсей Коледоє

2
просто python, я випадково використовував django
codyc4321

Схоже, що установка python не завершена. Ви встановили python через apt або ви склали та встановили його з джерела? Запустіть, which pythonщоб перевірити, який бінарний пітон у вас вперше в $ PATH.
HAL

Ви спробували видалити та перевстановити і python2, і python3 через apt?

Я наткнувся на це, використовуючи стек Bitnami Django при спробі pip3 install -r Requirments.txt int віртуальної env. Це спрацювало чудово, не використовуючи віртуальне оточення. Я не знайшов часу, щоб зрозуміти, чому це було проблемою.
Бред Роудс

Відповіді:


88

Для Python-3 спробуйте видалити файли віртуального середовища. І скинути його.

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 редагувати фо


2
Чудово! Дякую за те, що ви навчили мене встановлювати python3 в env за допомогою virtualenvкоманди! Чомусь мені знадобилося близько 2 місяців, щоб знайти його. Дивовижно ...
MadPhysicist

2
Привіт, я спробував це зробити на своєму пристрої Amazon AMI (на основі RHEL), але це не працює. Будь-який інший спосіб це можна вирішити?
Divij Sehgal

1
коли я ввів останню команду, вона дає мені помилку нижче, чи можете ви, будь ласка, вирішити ... Не вдалося відкрити файл вимог: [Errno 2] Немає такого файлу чи каталогу: 'требования.txt'
Deepak Chawla

1
@DeepakChawla needs.txt повинен бути присутнім у pwd, звідки ви видаєте цю команду, і це не має нічого спільного зі створенням enviornment, його способом встановлення пакетів у пакетному режимі.
Амар

7
Чи не повинно бути source venv/bin/activate?
Кіт

16

Для користувача Windows10.

Я використовував python3.4 в Windows10. Я встановив python3.5. Не вдалося знайти змінну PYTHONPATH, PYTHONHOME env. Якщо я командую python в консолі CMD, він продовжував використовувати python3.4. Я видалив python3.4. Кожен раз, коли я командую python на консолі CMD, він починає показувати помилку, як показано нижче.

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

Я шукав, щоб з’ясувати свою проблему. Рішення було простим. Встановлюючи python3.5, ви можете встановити та встановити прапорець Додати параметри Python до змінних оточення в Додаткові параметри.

Я просто залишаю тут на випадок, що хтось має подібні питання, які відвідують тут, щоб вони не витрачали свій дорогоцінний час на розмислення.


11

Я зіткнувся з тією ж проблемою в Windows7. Повідомлення про помилку виглядає так:

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

Current thread 0x000011f4 (most recent call first):

У мене встановлено python 2.7 (видалено зараз), і я встановив прапорець "Додати Python до змінних середовища в додаткових параметрах" під час встановлення python 3.6. Виявляється, що змінна середовища " PYTHONHOME " і " PYTHONPATH " все ще є python2.7.

Нарешті я вирішив це, змінивши " PYTHONHOME " на шлях встановлення python3.6 та видалити змінну " PYTHONPATH ".


9

Для тієї ж проблеми у Windows7

Ви побачите подібну помилку, якщо ваші змінні середовища / системні змінні неправильно встановлені:

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

Current thread 0x00001db4 (most recent call first):

Виправити це дійсно просто:

  1. Коли ви завантажуєте версію Python3.x і запускаєте файл .exe, це дає можливість налаштувати, де у вашій системі ви хочете встановити Python. Наприклад, я вибрав таке місце розташування: C: \ Program Files \ Python36

  2. Потім відкрийте властивості системи та перейдіть на вкладку " Додатково " (Або ви можете просто зробити це: Перейдіть до "Пуск"> Пошук " змінних середовища "> Клацніть "Редагувати змінні системного середовища".) На вкладці "Додатково" шукайте "Змінні середовища" та натисніть на нього. З'явиться ще одне вікно з назвою "Змінні середовища".

  3. Тепер переконайтеся, що ваші користувацькі змінні мають правильний шлях Python, вказаний у "Змінні шляху". У моєму прикладі ви повинні побачити C: \ Program Files \ Python36 . Якщо ви не знайдете його там, додайте його, вибравши поле Змінна Шлях і натиснувши Редагувати.

  4. Останній крок - двічі перевірити поля PYTHONHOME та PYTHONPATH у розділі System Variables у тому ж вікні. Ви повинні побачити той самий шлях, як описано вище. Якщо не додати і туди.

Потім натисніть кнопку ОК і поверніться до терміналу CMD та спробуйте перевірити наявність пітона. Тепер питання має бути вирішене. Це працювало для мене.


Це точно так само і в win10. У моєму випадку це було лише встановлення PYTHONHOME та PYTHONPATH на більш стару установку.
Андрес Марафіоти

@dotpy_novice Чи можете ви детально виділити крок 4? У мене не було жодного шляху, вказаного в моїх змінних користувачів, і я додав, як ви сказали, на кроці 3. Тепер я трохи вагаюся. У змінних системи немає PYTHONHOME і PYTHONPATH . Чи повинен я створити їх сам, якщо так, то що слід вставити для імені змінної та значення змінної ?
bit_scientist

6

У мене була помилка під час переходу на Ubuntu 17.10, і це вирішило проблему:

sudo dpkg-reconfigure python3

Можливо, вам доведеться закрити сеанс і знову підключитися.


У мене 16.04, це не вирішило мого питання. Я просто намагаюся зрозуміти, чому це сталося
Xavitoj Cheema

Та ж проблема в ubuntu 16.4 .. Чи слід перевстановити Ubuntu? /usr/sbin/dpkg-reconfigure: python3 ist kaputt oder nicht komplett installiert
Тимо

Про 18.04 Lubuntuце йдетьсяFatal Python error: Py_Initialize: Unable to get the locale encoding
Тимо

1

Подивіться на /lib/python3.5, і ви побачите ламані посилання на бібліотеки python. Відтворіть його в робочий каталог.

Наступна помилка -

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

виправлено так - /ubuntu/907035/importerror-cannot-import-name-remove-dead-weakref

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

1

Я зіткнувся з цим питанням "ModuleNotFoundError: Немає модуля з назвою" кодування "після оновлення до macOS Каталіна.

У мене було встановлено кілька версій Python в моїй системі.

Видалення всіх версій python (2.7 та 3.7.4) із системи macOS та перевстановлення останнього python 3.8 працювало для мене.

Щоб видалити python з macOS, я дотримувався інструкцій звідси Як видалити Python 2.7 на Mac OS X 10.6.4?

Наведене вище посилання стосується python 2.7, але ви можете використовувати те ж саме для 3.7.


0

У мене було подібне питання. У мене на комп'ютері були встановлені анаконда та пітон, а мої залежності від пітона були з каталогу Anaconda. Коли я видалив Anaconda, ця помилка почала з’являтися. Я додав, PYTHONPATHале все одно не пішов. Я зареєструвався python -versionі дізнаюся, що це все ще йде анаконда. Мені довелося вручну видалити каталог Anaconda3 і після цього python почав приймати залежності від PYTHONPATH.
Випуск вирішено!


0

Була така ж проблема під час оновлення мого mac до macOS Catalina під час використання pipenv. Pipenv створює та керує virtualenvдля вас, тому попередня пропозиція від @ Anoop-Malav є такою ж, просто використовуючи pipenv, щоб видалити віртуальне середовище на основі поточного режиму та скинути його:

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

0

У моєму випадку працювала лише зміна дозволів папки anaconda:

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

-1

Оскільки це перший результат у google, я просто хочу додати наступну інформацію для всіх, хто має проблеми із тюрмами:

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)

При спробі імпортувати python у вашу в'язницю вам обом потрібно прив’язати залежності та /usr/lib/pythonX.Y до [JAIL] / usr / lib /. Сподіваюся, це допомагає.


Шановний @matt, можете, будь ласка, надати кроки до "в'язниці" pythonx.y?
Пранів

@Pranav Я використовую цей скрипт: gist.github.com/williamhaley/5a499cd7c83aa0e01eaf ви можете запустити copy_binary pythonX.Y, а потім знайти бібліотеки під вашим реальним root /usr/lib/pythonX.Y, де XY - ваша версія python (для приклад python3.7). Скопіюйте їх у тюрму / usr / lib /, і ви готові. Ура
Метт

-2

Просто перейдіть у меню Файл -> Налаштування -> виберіть Інтерпретатор проекту на вкладці Проект -> натисніть на маленьку піктограму шестірні -> Додати -> Системний перекладач -> виберіть потрібну версію пітона у спадному меню

це, здавалося, працює для мене


це не його питання
NotSoShabby

-12

Я також міг це виправити. ПІТОНПАТ і ПІТОНХОМ були причиною.

запустіть це в терміналі

   touch ~/.bash_profile
   open ~/.bash_profile

а потім видаліть усі непотрібні частини цього файлу та збережіть. Я не знаю, як рекомендується це робити!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.