Problema con el administrador de actualizaciones: ningún módulo llamado 'apt_pkg' en Ubuntu 13.10, después de haber instalado Python 3.4 en / usr / local / lib

29

Soy bastante nuevo en Ubuntu e intento ejecutar el administrador de actualizaciones en Ubuntu 13.10. Yo obtengo:

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'

Por lo que he entendido, este es un problema relacionado con el hecho de que debería tener instalado python3.4. Lo instalé /usr/local/lib, pero siempre recibo el mismo error. De esta manera, ni siquiera puedo actualizar a Ubuntu 14.04.

usuario291925
fuente

Respuestas:

32

Vuelva a instalar apt_pkgusando:

sudo apt-get install --reinstall python3-apt

El error se debe principalmente a que la biblioteca apt_pkg.cpython-35m-x86_64-linux-gnu.sono está presente en /usr/lib/python3/dist-packages.

Eliminar y reinstalar debería ayudar.

vikas kapdoskar
fuente
14
Casi siempre es preferible reinstalar el paquete en un solo paso sudo apt install --reinstall <package-name>, ya que esto evita calcular y eliminar dependencias (y marcar paquetes para su eliminación). Tenga en cuenta que eliminar paquetes no siempre es un procedimiento reversible; por ejemplo, APT se eliminará a sí mismo o sus dependencias si se le solicita. Por --reinstalllo tanto, la bandera es mucho más segura que la removeseguida install. El removecomando por sí solo no elimina los archivos de configuración de un paquete, por lo que no tiene ningún beneficio install --reinstall.
Zanna
44
Esta respuesta debe actualizarse con la sugerencia de @Zanna, eliminar python3-apt eliminará un montón de dependencias y puede asustar a alguien, sin mencionar que estropeó su sistema.
Alkanen
Desinstale apt-package with en su sudo dpkg -r --force-depends apt-packagelugar, que desinstala solo apt-package pero no ninguna de sus dependencias.
karel
12

para mí los siguientes pasos funcionaron:

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

la solución original está aquí: /programming/13708180/python-dev-installation-error-importerror-no-module-named-apt-pkg/36232975#36232975

Olimjon Ibragimov
fuente
1
Como se ha mencionado en un comentario sobre la "solución original," para mí esto funcionó: sudo ln -s apt_pkg.cpython-{35m,36m}-x86_64-linux-gnu.so. La 35versión (python 3.5) es la que se instala independientemente de la subversión particular de python 3.x que esté ejecutando. ¡Gracias!
fwc
6
update-alternatives  --set python3  /usr/bin/python3.6
v12aml
fuente
3
La actualización de alternativas para python a veces puede romper las cosas.
Kulfy
1
Solía update-alternatives --set python3 /usr/bin/python3.5y funcionó. python3 ya estaba apuntando python3.6en mi sistema.
Desik
2

Si está intentando actualizar 13.10 a 14.04, intente seguir estas instrucciones . Si solo está tratando de actualizar su sistema actual desde la línea de comandos, abra una terminal y escriba lo siguiente:

sudo apt-get update
sudo apt-get dist-upgrade
Charles Green
fuente
Gracias. Ya lo había intentado pero no funcionó. Intenté una vez más ahora, obteniendo, después de apt-get update, la advertencia W: no se pudo obtener bzip2: /var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_saucy-updates_main_source_Sources Hash Sum discordancia
user291925
K: tiene un problema con las fuentes de actualización. He visto varios hilos sobre cómo solucionarlo. El siguiente enlace parece ser una buena combinación
Charles Green
¡Gracias! Lo intenté, pero sigo teniendo el mismo error cuando se ejecutaupdate-manager
user291925
K: eso agota mis posibilidades sin una búsqueda web más extensa. ¡Buena suerte!
Charles Green
2

He logrado resolver esto copiando apt_pkg.cpython-34m-i386-linux-gnu.soa /usr/lib/python3/dist-packages/partir de otro escritorio con Ubuntu 14.04 LTS. He probado casi todas las posibilidades que se encuentran en Internet, como la depuración de la instalación de Python y luego la reinstalación, la limpieza de archivos de actualización rotos, etc., pero terminé sin éxito.

Renju Chingath
fuente
1

En caso de que ayude a otro, finalmente resolví este problema, que aparentemente fue causado por conflictos en la versión de Python, al redirigir el enlace python3 y luego redirigirlo a la versión correcta de Python:

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

Es posible que deba ingresar la versión correcta de Python, que se encuentra con

python3 -V
matthias2t
fuente
Entonces, ¿eliminaste una versión para 3.4?
IggyPass
Intenté esto y descubrí que empeoraba las cosas . No puedo recomendar
MERose
1

Solo un consejo: evito instalar "mi" python en / usr / local, pero tengo un directorio dedicado por versión de python (por ejemplo, en / opt) y estoy usando entornos virtuales en mi cuenta de usuario para usar el python que necesito, que es activado por mi .profile

Con este enfoque, siempre evitará cambiar la configuración y las dependencias esperadas del sistema Python.

Bueno, lo sé, es demasiado tarde para tu caso, pero ...

Michael Hooreman
fuente
1

El problema para mí fue que instalé python3.7 junto a python3.6 y lo hice por defecto.

Ejecuto manualmente el siguiente comando:

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

entonces python3 ahora apunta a la versión correcta de python ... que resuelve el problema.

M.Hefny
fuente
1
También estoy enfrentando el problema porque actualicé a python3.7 en Ubuntu 18. Pero cuando hago lo que hiciste (crear un enlace simbólico), lo obtuve ln: failed to create symbolic link '/usr/bin/python3': File exists. Si lo hago lsen mi /usr/bin/python*, tengo python3, python3.6, python3.6m, python3.7, python3.7my python3m. Si lo hago sudo update-alternatives --config python3, tengo *0 /usr/bin/python3.7 2 auto mode, 1 /usr/bin/python3.6 1 manual modey 2 /usr/bin/python3.7 2 manual mode. Gracias.
user1330974
es posible que necesite eliminar un archivo de enlace que ya existe o cambiarle el nombre a .old y crear su propio enlace.
M.Hefny
@ user1330974 ¿finalmente resolvió el problema? Estoy enfrentando el mismo problema
dallonsi
1
@ user1330974 aparentemente, solo forzar el enlace simbólico funcionó:ln -sf /usr/bin/python3.6 /usr/bin/python3
dallonsi
1
@dallonsi Gracias. No lo busqué más, pero usaré tu enfoque. :)
user1330974