ImportError: нет модуля с именем "кодировки"

108

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

codyc4321
источник
Это связано с Django или просто с Python? Вы можете изменить свой вопрос с помощью соответствующего тега.
Moses Koledoye
2
просто python, я использовал django
codyc4321
Похоже, что установка python не завершена. Вы установили python через apt или скомпилировали и установили его из исходников? Запустите, which pythonчтобы проверить, какой двоичный файл python у вас первым в $ PATH.
HAL
Вы пробовали удалить и переустановить как python2, так и python3 через apt?
Я столкнулся с этим, используя стек Bitnami Django, когда пытался pip3 install -r Requirments.txt в виртуальном окружении. Он отлично работал без использования виртуального окружения. Я не нашел времени, чтобы понять, почему это было проблемой.
Брэд Роадс,

Ответы:

89

Для 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 редактировать fo

Ануп Малав
источник
2
Большой! Спасибо, что научили меня устанавливать python3 в env с помощью virtualenvкоманды! Почему-то мне понадобилось около 2 месяцев, чтобы найти его. Удивительно ...
MadPhysicist
2
Привет, я попытался сделать это на своем устройстве Amazon AMI (на основе RHEL), но это не сработало. Каким другим способом это можно решить?
Divij Sehgal
1
когда я ввел последнюю команду, я получил ошибку ниже, не могли бы вы решить ... Не удалось открыть файл требований: [Errno 2] Нет такого файла или каталога: 'requirements.txt'
Дипак Чавла
1
@DeepakChawla requirements.txt должен присутствовать в pwd, откуда вы запускаете эту команду, и он не имеет ничего общего с созданием среды, это способ установки пакетов в пакетном режиме.
Amar
7
Не должно быть source venv/bin/activate?
Кит
16

Для пользователя 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 в переменные среды» в дополнительных параметрах.

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

Jayground
источник
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 3.6 установил флажок «Добавить Python в переменные среды в дополнительных параметрах». Оказывается, переменные окружения « 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 . Если вы не нашли его там, добавьте его, выбрав поле Path Variable и нажав Edit.

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

Затем нажмите ОК, вернитесь в терминал CMD и попробуйте проверить наличие Python. Теперь проблема должна быть решена. У меня это сработало.

dotpy_novice
источник
То же самое и на win10. В моем случае это были просто PYTHONHOME и PYTHONPATH, которые были установлены на более старую установку.
Andrés Marafioti
@dotpy_novice Не могли бы вы подробно осветить шаг 4? У меня не было ни одного пути, указанного в моих пользовательских переменных, и я добавил, как вы сказали на шаге 3. Теперь я немного не решаюсь продолжить. В системных переменных нет PYTHONHOME и PYTHONPATH . Должен ли я создавать их сам, если да, то я должен вставить для переменного имени и значения переменного ?
bit_scientist
6

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

sudo dpkg-reconfigure python3

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

Numahell
источник
У меня 16.04, мою проблему это не решило. Я просто пытаюсь понять, почему это произошло
Хавитой Чима
Та же проблема на ubuntu 16.4 .. Стоит ли переустановить Ubuntu? /usr/sbin/dpkg-reconfigure: python3 ist kaputt oder nicht komplett installiert
Timo
На 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: нет модуля с именем« 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.

Кондал Колипака
источник
0

У меня была аналогичная проблема. На моем компьютере были установлены и anaconda, и python, и мои зависимости python были из каталога 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
qix
источник
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, затем найти библиотеки в вашем реальном корне /usr/lib/pythonX.Y, где XY - ваша версия python (для пример python3.7). Скопируйте их в свои тюрьмы / usr / lib / и все готово. Ура
Мэтт
-2

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

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

Балу Б
источник
это не его проблема
NotSoShabby
-12

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

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

   touch ~/.bash_profile
   open ~/.bash_profile

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

Pber6154
источник