ImportError: Nenhum módulo denominado 'codificações'

106

Recentemente, reinstalei o ubuntu e atualizei para 16.04 e não consigo usar 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

Neste ponto, o próprio python não funciona

$ 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

Mesmo esta sugestão não está mais funcionando:

unset PYTHONHOME
unset PYTHONPATH

Cada vez que eu conserto de uma maneira, ela volta novamente. Várias respostas ajudam a consertá-lo temporariamente, mas não para sempre. Reinstalei o python e o python3 várias vezes. O que posso fazer a partir daqui? Obrigado

codyc4321
fonte
Isso está relacionado ao Django ou apenas Python? Você pode querer editar sua pergunta com a tag apropriada.
Moses Koledoye
2
apenas python, aconteceu de eu estar usando django
codyc4321
Parece que a instalação do python está incompleta. Você instalou o python via apt ou compilou e instalou a partir do código-fonte? Execute which pythonpara verificar qual binário Python você tem primeiro em $ PATH.
HAL
Você já tentou desinstalar e reinstalar o python2 e o python3 via apt?
Corri para isso usando a pilha Bitnami Django ao tentar pip3 install -r requirments.txt em um env virtual. Funcionou bem sem usar o env virtual. Não parei para descobrir por que isso era um problema.
Brad Rhoads,

Respostas:

88

Para Python-3, tente remover os arquivos do ambiente virtual. E reiniciá-lo.

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 edit fo

Anoop Malav
fonte
2
Ótimo! Obrigado por me ensinar como instalar o python3 em um env usando o virtualenvcomando! Por alguma razão, demorei cerca de 2 meses para encontrá-lo. Incrível ...
MadPhysicist
2
Olá, tentei fazer isso no meu dispositivo Amazon AMI (baseado em RHEL), mas não funciona. Alguma outra maneira de resolver?
Divij Sehgal
1
quando eu digitei o último comando, ele me deu o erro abaixo, você pode resolver ... Não foi possível abrir o arquivo de requisitos: [Errno 2] Não existe esse arquivo ou diretório: 'requirements.txt'
Deepak Chawla
1
@DeepakChawla requirements.txt deve estar presente no pwd de onde você está emitindo este comando e não tem nada a ver com a criação de ambiente, é uma maneira de instalar pacotes em modo batch.
Amar
7
Não deveria ser source venv/bin/activate?
Keith
16

Para usuário do Windows10.

Eu estava usando o python3.4 no Windows10. Eu instalei o python3.5. Não consegui encontrar a variável env PYTHONPATH, PYTHONHOME. Se eu comandar python no console CMD, ele continuará usando o python3.4. Excluí python3.4. Sempre que eu comando python no console CMD, ele começa a mostrar um erro como abaixo.

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

Procurei descobrir meu problema. A solução era simples. Ao instalar o python3.5, você pode personalizar a instalação e marcar Adicionar Python às variáveis ​​de ambiente em Opções avançadas.

Deixo aqui apenas para o caso de alguém ter problemas semelhantes visitar aqui para que não perca seu precioso tempo para descobrir.

Jayground
fonte
11

Eu estava enfrentando o mesmo problema no Windows7. A mensagem de erro é assim:

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

Current thread 0x000011f4 (most recent call first):

Eu instalei o python 2.7 (desinstalado agora) e marquei "Adicionar Python às variáveis ​​de ambiente em Opções avançadas" durante a instalação do python 3.6. Acontece que a variável de ambiente " PYTHONHOME " e " PYTHONPATH " ainda é python2.7.

Finalmente resolvi modificando " PYTHONHOME " para o caminho de instalação do python3.6 e removendo a variável " PYTHONPATH ".

Li Qiao
fonte
9

Para o mesmo problema no Windows 7

Você verá um erro como este se suas variáveis ​​de ambiente / variáveis ​​de sistema estiverem definidas incorretamente:

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

Current thread 0x00001db4 (most recent call first):

Consertar isso é muito simples:

  1. Ao fazer o download da versão Python3.x e executar o arquivo .exe, você tem a opção de personalizar onde deseja instalar o Python em seu sistema. Por exemplo, escolhi este local: C: \ Arquivos de programas \ Python 36

  2. Em seguida, abra as propriedades do sistema e vá para a guia " Avançado " (Ou você pode simplesmente fazer isso: Vá para Iniciar> Pesquisar por " variáveis ​​de ambiente "> Clique em "Editar as variáveis ​​de ambiente do sistema".) Na guia "Avançado", procure "Variáveis ​​de ambiente" e clique nele. Outra janela com o nome "Variáveis ​​de ambiente" aparecerá.

  3. Agora certifique-se de que suas variáveis ​​de usuário tenham o caminho correto do Python listado em "Variável de caminho". No meu exemplo aqui, você deve ver C: \ Program Files \ Python36 . Se você não o encontrar lá, adicione-o, selecionando o campo Variável do caminho e clicando em Editar.

  4. O último passo é verificar novamente PYTHONHOME e PythonPath campos sob Variáveis do sistema na mesma janela. Você deve ver o mesmo caminho descrito acima. Se não, adicione lá também.

Em seguida, clique em OK e volte ao terminal CMD e tente verificar se há python. O problema agora deve ser resolvido. Funcionou para mim

dotpy_novice
fonte
Isso é exatamente o mesmo no win10. No meu caso, era apenas o PYTHONHOME e o PYTHONPATH sendo configurados para uma instalação mais antiga.
Andrés Marafioti
@dotpy_novice Você poderia destacar a etapa 4 em detalhes? Não tinha nenhum caminho listado em minhas variáveis ​​de usuário e adicionei como você disse na etapa 3. Agora estou um pouco hesitante em continuar. Não há PYTHONHOME e PYTHONPATH em variáveis do sistema. Devo criá-los sozinho, se sim, o que devo inserir para o nome da variável e o valor da variável ?
bit_scientist
6

Eu tive este erro durante a migração para o Ubuntu 17.10 e isso resolveu o problema:

sudo dpkg-reconfigure python3

Talvez você tenha que fechar sua sessão e reconectar.

numahell
fonte
Eu tenho 16,04, isso não resolveu meu problema. Estou apenas tentando entender, por que isso aconteceu
Xavitoj Cheema
Mesmo problema no ubuntu 16.4 .. Devo reinstalar o Ubuntu? /usr/sbin/dpkg-reconfigure: python3 ist kaputt oder nicht komplett installiert
Timo
Em 18.04 Lubuntu, dizFatal Python error: Py_Initialize: Unable to get the locale encoding
Timo
1

Olhe em /lib/python3.5 e você verá links quebrados para bibliotecas Python. Recrie-o no diretório de trabalho.

Próximo erro -

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

corrigido assim - /ubuntu/907035/importerror-cannot-import-name-remove-dead-weakref

cd my-virtualenv-directory
virtualenv . --system-site-packages
IvanTheFirst
fonte
1

Eu estava enfrentando o problema "ModuleNotFoundError: Nenhum módulo chamado 'codificações" após atualizar para o macOS Catalina.

Eu estava tendo várias versões do Python instaladas em meu sistema.

Remover todas as versões do python (2.7 e 3.7.4) do sistema macOS e reinstalar o python 3.8 mais recente funcionou para mim.

Para remover um python do macOS, segui as instruções aqui Como desinstalar o Python 2.7 em um Mac OS X 10.6.4?

O link acima é para o python 2.7, mas você pode usar o mesmo para o 3.7 também.

Kondal Kolipaka
fonte
0

Eu tive uma questão semelhante. Eu tinha o anaconda e o python instalados no meu computador e minhas dependências do python estavam no diretório do Anaconda. Quando desinstalei o Anaconda, este erro começou a aparecer. Eu adicionei, PYTHONPATHmas ainda não saiu. Verifiquei com python -versione fui saber se ele ainda estava tomando o caminho da anaconda. Tive que deletar manualmente o diretório do Anaconda3 e depois disso o python começou a tirar dependências de PYTHONPATH.
Problema resolvido!

Satyam Gaba
fonte
0

Tive o mesmo problema ao atualizar meu mac para macOS Catalina, ao usar pipenv. Pipenv cria e gerencia um virtualenvpara você, então a sugestão anterior de @ Anoop-Malav é a mesma, apenas usando pipenv para remover o ambiente virtual baseado no diretório atual e redefini-lo:

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

No meu caso, apenas alterar as permissões da pasta anaconda funcionou:

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

Como este é o primeiro resultado no google, quero apenas adicionar as seguintes informações para qualquer outra pessoa que tenha problemas com prisões:

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)

Ao tentar importar o python para sua prisão, ambos precisam vincular as dependências e /usr/lib/pythonX.Y a [JAIL] / usr / lib /. Espero que isto ajude.

Matt
fonte
Caro @matt, pode fornecer os passos para 'aprisionar' pythonx.y?
Pranav
@Pranav Estou usando este script: gist.github.com/williamhaley/5a499cd7c83aa0e01eaf você pode executar copy_binary pythonX.Y e encontrar as bibliotecas em sua raiz real /usr/lib/pythonX.Y onde XY é sua versão de python (para exemplo python3.7). Copie-os para sua jaula / usr / lib / e pronto. Saúde
Matt
-2

Basta ir para Arquivo -> Configurações -> selecionar Project Interpreter na aba Project -> clicar no pequeno ícone de engrenagem -> Add -> System Interpreter -> selecionar a versão python desejada no menu suspenso

isso pareceu funcionar para mim

Balu B
fonte
este não é o problema dele
NotSoShabby
-12

Eu também poderia consertar isso. PYTHONPATH e PYTHONHOME estavam na causa.

execute isso em um terminal

   touch ~/.bash_profile
   open ~/.bash_profile

e, em seguida, exclua todas as partes inúteis deste arquivo e salve. Não sei como é recomendável fazer isso!

Pber6154
fonte