Problema com o update-manager: nenhum módulo chamado 'apt_pkg' no Ubuntu 13.10, tendo instalado o Python 3.4 em / usr / local / lib

29

Sou bastante novo no Ubuntu e estou tentando executar o update-manager no Ubuntu 13.10. Eu recebo:

jacopo@jacopo-laptop:~$ update-manager 
Traceback (most recent call last):
  File "/usr/bin/update-manager", line 28, in <module>
    from gi.repository import Gtk
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 27, in <module> from ._gi import _API
ImportError: No module named 'gi._gi'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 64, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 20, in <module>
import apt
File "/usr/lib/python3/dist-packages/apt/__init__.py", line 21, in <module>
import apt_pkg
ImportError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
File "/usr/bin/update-manager", line 28, in <module>
from gi.repository import Gtk
File "/usr/lib/python3/dist-packages/gi/__init__.py", line 27, in <module>
from ._gi import _API
ImportError: No module named 'gi._gi'

Até onde eu entendi, esse é um problema relacionado ao fato de que eu deveria ter o python3.4 instalado. Eu o instalei /usr/local/lib, mas sempre recebo o mesmo erro. Dessa forma, não posso nem atualizar para o Ubuntu 14.04.

user291925
fonte

Respostas:

32

Reinstale apt_pkgusando:

sudo apt-get install --reinstall python3-apt

O erro ocorre principalmente porque a biblioteca apt_pkg.cpython-35m-x86_64-linux-gnu.sonão está presente no /usr/lib/python3/dist-packages.

Remover e reinstalar deve ajudar.

vikas kapdoskar
fonte
14
É quase sempre preferível reinstalar o pacote em uma única etapa sudo apt install --reinstall <package-name>, porque isso evita o cálculo e a remoção de dependências (e a marcação de pacotes para remoção). Esteja ciente de que a remoção de pacotes nem sempre é um procedimento reversível; por exemplo, o APT removerá a si próprio ou suas dependências, se solicitado! A --reinstallbandeira é, portanto, muito mais segura do que removeseguida por install. O removecomando por si só não remove os arquivos de configuração de um pacote e, portanto, não possui nenhum benefício install --reinstall.
Zanna
Perfeito! Funcionou para mim!
Francis Rodrigues
8
Agora estou recebendo o seguinte erro: sudo: add-apt-repository: command not found@vikas kapdoskar
alper
11
sudo: add-apt-repository: command not foundrecebendo este erro no ubuntu 16:04
Tinkal Gogoi 12/07/19
4
Esta resposta deve ser atualizada com a sugestão do @Zanna, remover o python3-apt removerá uma tonelada de dependências e pode assustar alguém, sem mencionar que está atrapalhando o sistema.
alkanen
11

para mim, os seguintes passos funcionaram:

cd /usr/lib/python3/dist-packages
sudo ln -s apt_pkg.cpython-{35m,34m}-x86_64-linux-gnu.so

a solução original está aqui: /programming/13708180/python-dev-installation-error-importerror-no-module-named-apt-pkg/36232975#36232975

Olimjon Ibragimov
fonte
11
Como mencionado em um comentário sobre a "solução original," para mim isso funcionou: sudo ln -s apt_pkg.cpython-{35m,36m}-x86_64-linux-gnu.so. A 35versão (python 3.5) é a que está instalada, independentemente da sub-versão específica do python 3.x que você está executando. Obrigado!
Fwc 23/05/19
5
update-alternatives  --set python3  /usr/bin/python3.6
v12aml
fonte
3
Atualizar alternativas para python às vezes pode quebrar as coisas.
Kulfy
11
Eu usei update-alternatives --set python3 /usr/bin/python3.5e funcionou. python3 já estava apontando python3.6no meu sistema.
31819 Desik
2

Se você estiver tentando atualizar 13.10 para 14.04, tente seguir estas instruções . Se você está apenas tentando atualizar seu sistema atual a partir da linha de comando, abra um terminal e digite o seguinte:

sudo apt-get update
sudo apt-get dist-upgrade
Charles Green
fonte
Obrigado. Eu já tinha tentado, mas não funcionou. Tentei mais uma vez agora, obtendo, após a atualização do apt-get, o aviso W: Falha ao buscar o bzip2: /var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_saucy-updates_main_source_Sources Incompatibilidade de soma de hash
user291925
K - você tem um problema com as fontes de atualização. Eu vi vários tópicos sobre como corrigir isso O link a seguir parece ser um bom jogo para a sua pergunta askubuntu.com/questions/41605/...
Charles Green
Obrigado! Eu tentei, mas eu ainda obter o mesmo erro durante a execuçãoupdate-manager
user291925
K - isso esgota minhas possibilidades sem uma pesquisa na web mais extensa. Boa sorte!
Charles Green
2

Eu consegui resolver isso copiando apt_pkg.cpython-34m-i386-linux-gnu.sopara /usr/lib/python3/dist-packages/outro desktop executando o Ubuntu 14.04 LTS. Eu tentei quase todas as possibilidades encontradas na Internet, como limpar a instalação do python e reinstalar, limpar os arquivos de atualização quebrados etc., mas acabei sem sucesso.

Renju chingath
fonte
1

No caso de ajudar outra pessoa, finalmente resolvi esse problema, que aparentemente foi causado por conflitos de versão do python, redirecionando o link python3 e depois para a versão correta do python:

sudo rm /usr/bin/python3
sudo ln -s /usr/bin/python3.4

Pode ser necessário inserir a versão python correta, encontrada com

python3 -V
matthias2t
fonte
Então você removeu uma versão para 3.4?
IggyPass
Tentei isso e achei que piorava as coisas . Não posso recomendar.
MERose
1

Apenas um aviso: evito instalar o "my" python em / usr / local, mas tenho um diretório dedicado por versão do python (por exemplo, em / opt) e estou usando ambientes virtuais na minha conta de usuário para usar o python necessário, que é ativado pelo meu .profile

Por essa abordagem, você sempre evitará alterar a configuração e as dependências esperadas do sistema python.

Bem, eu sei, é tarde demais para o seu caso, mas ...

Michael Hooreman
fonte
1

O problema para mim foi que eu instalei o python3.7 ao lado do python3.6 e o ​​tornei o padrão.

Eu executo manualmente o seguinte comando:

ln -s /usr/bin/python3.6  /usr/bin/python3

agora o python3 agora aponta para a versão correta do python ... que resolve o problema.

M.Hefny
fonte
11
Também estou enfrentando o problema porque atualizei para python3.7 no Ubuntu 18. Mas quando faço o que você fez (criar um link simbólico), recebi ln: failed to create symbolic link '/usr/bin/python3': File exists. Se eu faço lsna minha /usr/bin/python*, eu tenho python3, python3.6, python3.6m, python3.7, python3.7me python3m. Se eu fizer sudo update-alternatives --config python3, eu tenho *0 /usr/bin/python3.7 2 auto mode, 1 /usr/bin/python3.6 1 manual modee 2 /usr/bin/python3.7 2 manual mode. Obrigado.
user1330974
pode ser que você precise excluir um arquivo de link já existente ou renomeá-lo para .old e criar seu próprio link.
M.Hefny
@ user1330974 você finalmente resolveu o problema? Estou enfrentando o mesmo problema
dallonsi 20/11/19
11
@ user1330974 aparentemente, apenas forçando a ligação simbólica funcionou:ln -sf /usr/bin/python3.6 /usr/bin/python3
dallonsi
11
@dallonsi Obrigado. Não investiguei mais, mas usarei sua abordagem. :)
user1330974