ImportError: нет модуля с именем 'encodings'

Я недавно переустановил 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 не работает

$ 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 несколько раз. Что я могу сделать отсюда? Спасибо

19 ответов

Решение

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

rm -rf venv
virtualenv -p /usr/bin/python3 venv/
source env/bin/activate
pip install -r requirements.txt

https://wiki.ubuntu.com/XenialXerus/ReleaseNotes

Для пользователя Windows10.

Я использовал python3.4 на Windows10. Я установил python3.5. Я не смог найти переменную env PYTHONPATH, PYTHONHOME. Если я командую 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 в переменные среды в Дополнительные параметры.

Я просто оставляю здесь дело на случай, если кто-то сталкивается с подобными проблемами, чтобы не тратить свое драгоценное время на выяснение.

Я столкнулся с той же проблемой под 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" на путь установки python 3.6 и удалив переменную "PYTHONPATH".

По той же проблеме на 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. Если вы не нашли его там, добавьте его, выбрав поле Path Variable и нажав Edit.

  4. Последний шаг - дважды проверьте поля PYTHONHOME и PYTHONPATH в разделе Системные переменные в том же окне. Вы должны увидеть тот же путь, как описано выше. Если не добавить это там тоже.

Затем нажмите OK и вернитесь к терминалу CMD и попробуйте проверить наличие Python. Теперь проблема должна быть решена. Это сработало для меня.

У меня была эта ошибка во время миграции на Ubuntu 17.10, и это решило проблему:

sudo dpkg-reconfigure python3

Может быть, вам придется закрыть сеанс и восстановить соединение.

я удалилrm -r /usr/lib/python*

      dpkg -S '/usr/lib/python3*' | grep encodings

А потом нашел, что мне нужноlibpython3.10-minimal

      sudo apt-get install --reinstall libpython3.10-minimal

я наконец побежал

      sudo apt-get install --reinstall $(dpkg -S '/usr/lib/python3*' | cut -d ':' -f1 | cut -d ',' -f1 | sort | uniq | tr '\n' ' ')
sudo apt-get install --reinstall $(dpkg -S '/usr/lib/python2*' | cut -d ':' -f1 | cut -d ',' -f1 | sort | uniq | tr '\n' ' ')

Чтобы переустановить все пакеты, для которых я удалил файлы

Все перепробовал, удалил PYTHONPATH и PYTHONHOME - ошибка не исчезла. Я упустил из виду, что указал путь python-home в WSGIDaemonProcess в конфигурации wsgi виртуального хоста. Я удалил это, и ошибка исчезла.

Посмотрите /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'

исправлено вот так - https://askubuntu.com/questions/907035/importerror-cannot-import-name-remove-dead-weakref

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

Я столкнулся с этой проблемой "ModuleNotFoundError: нет модуля с именем" encodings "после обновления до macOS Catalina.

В моей системе было установлено несколько версий 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.

Я получил эту ошибку при попытке запустить MySql Workbench 8.0 на моем macOS Catalina 10.15.3.

Я решил эту проблему, установив Python 3.7 в свою систему.

Я предполагаю, что в будущем, когда Workbench будет иметь версию выше 8, ему потребуется более новая версия Python. Просто посмотрите на путь к библиотеке в сообщении об ошибке, и вы найдете нужную версию.

В моем случае сработало просто изменение разрешений папки anaconda:

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

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

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

Кажется, эта ошибка может произойти по большому количеству причин (учитывая количество разных ответов здесь).

Для меня проблема была связана с тем, что мое приложение было развернуто в виртуальной среде, а pyvenv.cfgфайл имел неправильные разрешения. Он должен быть доступен для записи пользователю, под которым работает uwsgi (в моем случае это было http).

В моем случае сработало следующее: я изменил путь env в conf с /home/vinzee/.pyenv/versions/envname/bin/ к /home/vinzee/.pyenv/versions/envname/ и это сработало.

Кажется, что путь к среде должен быть путем к корневой папке виртуальной среды (а не путем к ROOT_VENV/bin/).

Вы также можете попробовать без завершающей косой черты, как предлагали другие, но в моем случае это работало как с ним, так и без него.

Я столкнулся с той же проблемой на сервере Debian, и для меня проблема заключалась в том, что я поместил свой проект в /root/папка, к которой mod_wsgi не имел прав доступа. Поэтому я просто переместил свой проект в /var/www/html/ и обновите мою конфигурацию VirtualHost.

У меня была аналогичная проблема. На моем компьютере были установлены и anaconda, и python, и мои зависимости python были из каталога Anaconda. Когда я удалил Anaconda, эта ошибка начала появляться. я добавилPYTHONPATHно все равно не пошло. Я проверил сpython -versionи узнайте, что он все еще шел по пути анаконды. Мне пришлось вручную удалить каталог Anaconda3, и после этого python начал получать зависимости отPYTHONPATH.
Проблема решена!

Поскольку это первый результат в 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/. Надеюсь это поможет.

Я также мог бы это исправить. PYTHONPATH и PYTHONHOME были причиной.

запустить это в терминале

   touch ~/.bash_profile
   open ~/.bash_profile

а затем удалите все ненужные части этого файла и сохраните. Я не знаю, как рекомендуется это делать!

Просто зайдите в File -> Settings -> выберите Project Interpreter на вкладке Project -> щелкните маленький значок шестеренки -> Add -> System Interpreter -> выберите нужную версию python в раскрывающемся меню.

это, казалось, сработало для меня

Другие вопросы по тегам