Problema con update-manager: nessun modulo chiamato 'apt_pkg' in Ubuntu 13.10, dopo aver installato Python 3.4 su / usr / local / lib


29

Sono piuttosto nuovo su Ubuntu e sto cercando di eseguire Update Manager su Ubuntu 13.10. Ottengo:

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'

Per quanto ho capito, questo è un problema legato al fatto che avrei dovuto installare python3.4. L'ho installato /usr/local/lib, ma ottengo sempre lo stesso errore. In questo modo non riesco nemmeno ad aggiornare a Ubuntu 14.04.

Risposte:


32

Reinstalla apt_pkgutilizzando:

sudo apt-get install --reinstall python3-apt

L'errore è principalmente dovuto alla apt_pkg.cpython-35m-x86_64-linux-gnu.somancata presenza della libreria in /usr/lib/python3/dist-packages.

La rimozione e la reinstallazione dovrebbero aiutare.


14
È quasi sempre preferibile reinstallare il pacchetto in un solo passaggio sudo apt install --reinstall <package-name>, poiché ciò evita il calcolo e la rimozione delle dipendenze (e la marcatura dei pacchetti per la rimozione). Tenere presente che la rimozione dei pacchetti non è sempre una procedura reversibile; per esempio APT rimuoverà se stesso o le sue dipendenze se richiesto! La --reinstallbandiera è quindi molto più sicura di quella removeseguita da install. Il removecomando da solo non rimuove i file di configurazione di un pacchetto, quindi non ha alcun vantaggio install --reinstall.
Zanna,

4
Questa risposta dovrebbe essere aggiornata con il suggerimento di @Zanna, la rimozione di python3-apt rimuoverà una tonnellata di dipendenze e potrebbe spaventare la merda di qualcuno, per non parlare del pasticcio del suo sistema.
alkanen,

Quindi disinstallare apt-package con sudo dpkg -r --force-depends apt-packageinvece che disinstalla solo apt-package ma nessuna delle sue dipendenze.
karel,

12

per me i seguenti passaggi hanno funzionato:

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

la soluzione originale è qui: /programming/13708180/python-dev-installation-error-importerror-no-module-named-apt-pkg/36232975#36232975


1
Come già detto in un commento sopra al "soluzione originale," per me questo ha funzionato: sudo ln -s apt_pkg.cpython-{35m,36m}-x86_64-linux-gnu.so. La versione 35(python 3.5) è quella installata indipendentemente dalla particolare versione secondaria di python 3.x in esecuzione. Grazie!
fwc,

6
update-alternatives  --set python3  /usr/bin/python3.6

3
L'aggiornamento di alternative per Python potrebbe talvolta rompere le cose.
Kulfy,

1
Ho usato update-alternatives --set python3 /usr/bin/python3.5e ha funzionato. python3 puntava già python3.6sul mio sistema.
Desik,

2

Se stai tentando di aggiornare da 13.10 a 14.04, prova a seguire queste istruzioni . Se stai solo cercando di aggiornare il tuo sistema attuale dalla riga di comando, apri un terminale e digita quanto segue:

sudo apt-get update
sudo apt-get dist-upgrade

Grazie. Ci avevo già provato ma non ha funzionato. Ho provato ancora una volta, ricevendo, dopo apt-get update, l'avvertimento W: Impossibile recuperare bzip2: /var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_saucy-updates_main_source_Sources Hash Sum non corrispondente
user291925

K - hai un problema con le fonti di aggiornamento. Ho visto diversi thread su come risolvere il problema. Il seguente link sembra essere una buona corrispondenza per la tua domanda askubuntu.com/questions/41605/…
Charles Green

Grazie! Ho provato, ma ho ancora lo stesso errore durante l'esecuzioneupdate-manager
user291925

K: questo esaurisce le mie possibilità senza una ricerca web più ampia. In bocca al lupo!
Charles Green,

2

Sono riuscito a risolvere questo problema copiando apt_pkg.cpython-34m-i386-linux-gnu.soa /usr/lib/python3/dist-packages/da un altro desktop con Ubuntu 14.04 LTS. Ho provato quasi tutte le possibilità che si trovano su Internet, ad esempio eliminando l'installazione di Python e quindi reinstallando, pulendo i file di aggiornamento rotti, ecc., Ma alla fine non ho avuto successo.


1

Nel caso in cui aiuti un altro, ho finalmente risolto questo problema, apparentemente causato da conflitti di versione di Python, reindirizzando il collegamento python3, quindi reindirizzandolo alla giusta versione di Python:

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

Potrebbe essere necessario inserire la versione corretta di Python, trovata con

python3 -V

Quindi hai rimosso una versione per 3.4?
IggyPass,

Ho provato questo e l'ho trovato per peggiorare le cose . Non posso raccomandare.
MERose

1

Solo un consiglio: evito di installare "my" python su / usr / local, ma ho una directory dedicata per versione di python (ad esempio in / opt) e sto usando ambienti virtuali sul mio account utente per usare il python di cui ho bisogno, che è attivato dal mio .profile

Con questo approccio, eviterai sempre di modificare la configurazione e le dipendenze previste dal sistema python.

Beh, lo so, è troppo tardi per il tuo caso, ma ...


1

Il problema per me era che ho installato python3.7 accanto a python3.6 e l'ho reso predefinito.

Eseguo manualmente il seguente comando:

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

così python3 ora punta alla versione corretta di python ... che risolve il problema.


1
Sto anche affrontando il problema perché ho aggiornato a python3.7 in Ubuntu 18. Ma quando faccio quello che hai fatto (creare un collegamento simbolico), ho ottenuto ln: failed to create symbolic link '/usr/bin/python3': File exists. Se faccio lsnel mio /usr/bin/python*, ho python3, python3.6, python3.6m, python3.7, python3.7me python3m. Se lo faccio sudo update-alternatives --config python3, ho *0 /usr/bin/python3.7 2 auto mode, 1 /usr/bin/python3.6 1 manual modee 2 /usr/bin/python3.7 2 manual mode. Grazie.
user1330974,

potrebbe essere necessario eliminare un file di collegamento già esistente o rinominarlo in .old e creare il proprio collegamento.
M.Hefny,

@ user1330974 hai finalmente risolto il problema? Sto affrontando lo stesso problema
dallonsi il

1
A quanto pare @utente1330974, forzando il collegamento simbolico ha funzionato:ln -sf /usr/bin/python3.6 /usr/bin/python3
dallonsi

1
@dallonsi Grazie. Non ho approfondito, ma userò il tuo approccio. :)
user1330974
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.