Masalah dengan pembaruan-manajer: Tidak ada modul bernama 'apt_pkg' di Ubuntu 13.10, setelah menginstal Python 3.4 di / usr / local / lib

29

Saya agak baru di Ubuntu dan saya mencoba menjalankan pembaruan-manajer di Ubuntu 13.10. Saya mendapat:

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'

Sejauh yang saya mengerti, ini adalah masalah yang terkait dengan fakta bahwa saya harus menginstal python3.4. Saya menginstalnya /usr/local/lib, tetapi saya selalu mendapatkan kesalahan yang sama. Dengan cara ini saya bahkan tidak bisa meningkatkan ke Ubuntu 14.04.

pengguna291925
sumber

Jawaban:

32

Instal ulang apt_pkgmenggunakan:

sudo apt-get install --reinstall python3-apt

Kesalahan ini terutama karena perpustakaan apt_pkg.cpython-35m-x86_64-linux-gnu.sotidak hadir di /usr/lib/python3/dist-packages.

Menghapus dan menginstal ulang seharusnya membantu.

vikas kapdoskar
sumber
14
Hampir selalu lebih baik menginstal ulang paket dalam satu langkah menggunakan sudo apt install --reinstall <package-name>, karena ini menghindari menghitung dan menghapus dependensi (dan menandai paket untuk dihapus). Sadarilah bahwa menghapus paket tidak selalu merupakan prosedur yang dapat dibalikkan; misalnya APT akan menghapus sendiri atau dependensinya jika diminta! The --reinstallbendera karena itu jauh lebih aman daripada removediikuti oleh install. The removeperintah dengan sendirinya tidak menghapus file konfigurasi dari paket sehingga tidak memiliki manfaat lebih install --reinstall.
Zanna
4
Jawaban ini harus diperbarui dengan saran dari @Zanna, menghapus python3-apt akan menghapus satu ton dependensi dan dapat menakut-nakuti omong kosong seseorang, belum lagi mengacaukan sistem mereka.
alkanen
Jadi copot-instal paket-apt dengan sudo dpkg -r --force-depends apt-packageyang hanya menghapus instalan paket-apt tetapi tidak semua dependensinya.
karel
11

bagi saya langkah-langkah berikut berhasil:

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

solusi asli ada di sini: /programming/13708180/python-dev-installation-error-importerror-no-module-named-apt-pkg/36232975#36232975

Olimjon Ibragimov
sumber
1
Seperti disebutkan dalam komentar atas di "solusi asli," bagi saya ini bekerja: sudo ln -s apt_pkg.cpython-{35m,36m}-x86_64-linux-gnu.so. Versi 35(python 3.5) adalah apa yang diinstal terlepas dari sub-versi tertentu dari python 3.x yang Anda jalankan. Terima kasih!
fwc
6
update-alternatives  --set python3  /usr/bin/python3.6
v12aml
sumber
3
Memperbarui alternatif untuk python kadang-kadang bisa merusak.
Kulfy
1
Saya menggunakan update-alternatives --set python3 /usr/bin/python3.5dan itu berhasil. python3 sudah menunjuk ke python3.6sistem saya.
Desik
2

Jika Anda mencoba memutakhirkan 13.10 ke 14.04, coba ikuti instruksi ini . Jika Anda hanya mencoba memperbarui sistem Anda saat ini dari baris perintah, buka terminal dan ketikkan yang berikut:

sudo apt-get update
sudo apt-get dist-upgrade
Charles Green
sumber
Terima kasih. Saya sudah mencoba tetapi tidak berhasil. Saya mencoba sekali lagi sekarang, mendapatkan, setelah pembaruan apt-get, peringatan W: Gagal mengambil bzip2: /var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_saucy-updates_main_source_Sources Hash Sum mismatch
user291925
K - Anda memiliki masalah dengan sumber pembaruan. Saya telah melihat beberapa utas tentang cara memperbaikinya. Tautan berikut tampaknya cocok untuk pertanyaan Anda askubuntu.com/questions/41605/…
Charles Green
Terima kasih! Saya mencoba, tetapi saya masih mendapatkan kesalahan yang sama ketika menjalankanupdate-manager
user291925
K - bahwa tentang menguras kemungkinan saya tanpa pencarian web yang lebih luas. Semoga berhasil!
Charles Green
2

Saya telah berhasil menyelesaikan ini dengan menyalin apt_pkg.cpython-34m-i386-linux-gnu.soke /usr/lib/python3/dist-packages/dari desktop lain yang menjalankan Ubuntu 14.04 LTS. Saya telah mencoba hampir semua kemungkinan yang ditemukan di internet seperti, membersihkan instalasi python dan kemudian menginstal ulang, membersihkan file upgrade yang rusak dll, tetapi berakhir dengan tidak berhasil.

Renju chingath
sumber
1

Kalau-kalau itu membantu yang lain, saya akhirnya menyelesaikan masalah ini, yang tampaknya disebabkan oleh konflik versi python, dengan mengarahkan ulang tautan python3, kemudian mengarahkannya ke versi python yang tepat:

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

Anda mungkin perlu memasukkan versi python yang benar, ditemukan bersama

python3 -V
matthias2t
sumber
Jadi, Anda menghapus satu versi untuk 3.4?
IggyPass
Mencoba ini, dan menemukannya memperburuk keadaan . Tidak bisa merekomendasikan
MERose
1

Hanya saran: Saya menghindari memasang python "saya" di / usr / local, tapi saya punya satu direktori khusus per versi python (mis. Di / opt) dan saya menggunakan lingkungan virtual pada akun pengguna saya untuk menggunakan python yang saya butuhkan, yang diaktifkan oleh profil saya

Dengan pendekatan ini, Anda akan selalu menghindari untuk mengubah konfigurasi dan dependensi sistem python yang diharapkan.

Yah, aku tahu, sudah terlambat untuk kasusmu, tapi ...

Michael Hooreman
sumber
1

Masalahnya bagi saya adalah saya menginstal python3.7 di sebelah python3.6 dan menjadikannya default.

Saya secara manual menjalankan perintah berikut:

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

jadi python3 sekarang menunjuk ke versi python yang benar ... yang menyelesaikan masalah.

M.Hefny
sumber
1
Saya juga menghadapi masalah karena saya memperbarui ke python3.7 di Ubuntu 18. Tetapi ketika saya melakukan apa yang Anda lakukan (membuat tautan simbolik), saya dapat ln: failed to create symbolic link '/usr/bin/python3': File exists. Jika saya melakukan lsdi saya /usr/bin/python*, saya memiliki python3, python3.6, python3.6m, python3.7, python3.7mdan python3m. Jika saya melakukannya sudo update-alternatives --config python3, saya punya *0 /usr/bin/python3.7 2 auto mode, 1 /usr/bin/python3.6 1 manual modedan 2 /usr/bin/python3.7 2 manual mode. Terima kasih.
user1330974
mungkin Anda perlu menghapus file tautan yang sudah ada atau mengganti namanya menjadi .old dan membuat tautan Anda sendiri.
M.Hefny
@ user1330974 apakah Anda akhirnya memecahkan masalah? Saya menghadapi masalah yang sama
dallonsi
1
@ user1330974 rupanya, hanya memaksa tautan simbolis bekerja:ln -sf /usr/bin/python3.6 /usr/bin/python3
dallonsi
1
@dallonsi Terima kasih. Saya tidak melihat lebih jauh, tetapi saya akan menggunakan pendekatan Anda. :)
user1330974