“ImportError: nenhum módulo chamado _struct” configurando python-minimal

10

Quando executo sudo apt-get upgrade, o erro do dpkg aparece e interrompe o processo.

Detalhes do erro:

Setting up python-minimal (2.7.3-0ubuntu7.1) ...
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/local/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/lib/python2.7/compileall.py", line 16, in <module>
    import struct
  File "/usr/local/lib/python2.7/struct.py", line 1, in <module>
    from _struct import *
ImportError: No module named _struct
dpkg: error processing python-minimal (--configure):
 subprocess installed post-installation script returned error exit status 255
dpkg: dependency problems prevent configuration of python:
 python depends on python-minimal (= 2.7.3-0ubuntu7.1); however:
  Package python-minimal is not configured yet.

E esse problema leva a uma série de problemas de dependência ao processar os seguintes pacotes:

 python
 gwibber-service
 libgwibber3
 libgwibber-gtk3
 gwibber
 gwibber-service-facebook
 gwibber-service-identica
 gwibber-service-twitter
 python-all
 python-dev
 python-all-dev
 python-apt
 python-problem-report
 python-apport
 python-libxml2
 unity-lens-gwibber
 unity-scope-video-remote

Finalmente, nada que eu possa fazer por esse problema. E vários dias depois, o diretório raiz está cheio e eu nem consegui desinstalar nenhum software por causa desse problema.

Java Xu
fonte
possível duplicado de askubuntu.com/q/270011/169736
Braiam
@ Braiam, eu encontrei essa pergunta antes. As respostas são sugeridas para reinstalar o python. Eu tentei e falhei. Obrigado mesmo assim!
Java Xu
sudo apt-get clean ajuda para obter algum espaço de volta
frlan
/usr/bin/pythonMudei meu link simbólico para apontar python3.5e causou um erro muito semelhante a isso. Não sei por que, provavelmente com relação a python2.7deps que foram quebrados quando mudei o link simbólico sem aviso. IDK, deixando isso aqui para futuros viajantes
quietContest

Respostas:

8

Siga a solução da Soroosh. Python quebrado (2.7) após criar e instalar manualmente o python 2.6

Digite sudo -ipara acesso root.

Cole o comando e aguarde cerca de 20 minutos. Funciona perfeitamente.

for pkg in $(dpkg --get-selections | egrep -v 'deinstall' | egrep python | awk '{print $1}'); do  apt-get -y --force-yes install --reinstall $pkg ; done
Leo Pimentel
fonte
1

OK, examinando os pacotes, descobri que python-minimal não possui struct.py, mas python-minimal2.7.

Então, tente isso e veja se isso ajuda você:

sudo apt-get install --reinstall python2.7-minimal
sudo apt-get upgrade

Se mesmo isso não funcionar, talvez o seu $ PYTHONPATH esteja estragado de alguma forma.

nano ~/.bashrc

Adicione a linha export PYTHONPATH="${PYTHONPATH}:/usr/lib/python2.7"então

source ~/.bashrc

E tente sua atualização novamente.

Chuck R
fonte
editadas para acrescentar "exportação", é uma espécie de necessário;)
Chuck R
Ele diz "Não foi possível localizar o pacote python-minimal2.7". Você quer dizer python2.7-minimal? Quando tento reinstalar o python2.7-minimal, o mesmo problema de dependência ocorre.
Java Xu
Desculpe, demorou tanto tempo para eu voltar para você. Tente sudo apt-get clean sudo apt-get update sudo apt-get upgrade.
Chuck R
1
Receio que não funcione. Depois clean, updatee upgrade, em seguida, eu tento reinstalar python2.7-minimal, mas os mesmos aparece problema de dependência ea reinstallfalhar novamente.
Java Xu
Parece que eu estava errado sobre qual pacote. Na verdade, é o libpython2.7-minimal que contém o struct.py. Verifique se está instalado. Qual é a versão atual do python2.7-minimal que você instalou? Dica:dpkg -l | grep python2.7-minimal
Chuck R
1

Tente isto

sudo apt purge libpython*

Eu removi o python2.7 e 3.7 e excluí os arquivos relacionados do sistema. Depois disso, descobri que não consigo reinstalar o python2.7 Tentei muitos métodos ainda não funcionando, incluindo:

remover links flexíveis

dirs do ambiente virtual

autoremove

sudo dpkg --purge `dpkg --get-selections | grep deinstall | cut -f1`

Então eu encontrei alguns arquivos libpython pesquisando o sistema inteiro python (não remova os arquivos rm de dir, se você não tiver certeza.) Após remover os libpython*pacotes (eu os removi um por um), o python foi instalado com êxito.

Espero que isso possa ajudar algumas pessoas a ter os mesmos problemas

Jay
fonte
0

Não sei se isso vai ajudá-lo, é uma facada no escuro, mas verifique se a sua versão padrão do Python está definida como 2.7.

Existem três arquivos de preocupação em / usr / bin:

python (symlink)
python2.7
python3 (symlink)

Se você fizer ls -l /usr/bin | grep pythonisso, verá o que cada link simbólico aponta.

Se isso lhe mostra python -> python3ou python -> python3.3há algo errado. Neste ponto, você desejará:

rm /usr/bin/python
ln -s /usr/bin/python2.7 /usr/bin/python
Chuck R
fonte
Obrigado pela sua resposta. No meu /usr/bin, pythonestá vinculado a soft python2.7.
Java Xu
Por que é isso? Eu havia mudado meu link simbólico para apontar python3.5, e isso gerou uma enorme quantidade de pacotes python apttambém. Por que não posso usar como padrão o Python3? Qual é o caminho correto?
usar o seguinte código