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
Для пользователя 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):
Исправить это очень просто:
Когда вы загружаете версию Python3.x и запускаете файл.exe, он дает вам возможность указать, где в вашей системе вы хотите установить Python. Например, я выбрал это местоположение: C: \ Program Files \ Python36
Затем откройте системные свойства и перейдите на вкладку "Дополнительно" (или вы можете просто сделать это: Перейдите в Пуск> Поиск "переменных среды" > Нажмите "Изменить системные переменные среды".) На вкладке "Дополнительно" найдите " Переменные среды "и щелкните по нему. Появится другое окно с именем "Переменные среды".
Теперь убедитесь, что ваши пользовательские переменные имеют правильный путь Python, указанный в "Переменной пути". В моем примере здесь вы должны увидеть C: \ Program Files \ Python36. Если вы не нашли его там, добавьте его, выбрав поле Path Variable и нажав Edit.
Последний шаг - дважды проверьте поля 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 в раскрывающемся меню.
это, казалось, сработало для меня