"ImportError: Tidak ada modul bernama _struct" mengkonfigurasi python-minimal

10

Ketika saya menjalankan sudo apt-get upgrade, kesalahan dpkg muncul dan menyela proses.

Rincian kesalahan:

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.

Dan masalah ini menyebabkan serangkaian masalah ketergantungan saat memproses paket-paket berikut:

 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

Akhirnya, tidak ada yang bisa saya lakukan untuk masalah ini. Dan beberapa hari kemudian, direktori root penuh dan saya bahkan tidak dapat menghapus perangkat lunak apa pun karena masalah ini.

Java Xu
sumber
kemungkinan digandakan dari askubuntu.com/q/270011/169736
Braiam
@Braiam, saya telah menemukan pertanyaan ini sebelumnya. Jawabannya disarankan untuk menginstal ulang python. Saya sudah mencoba, dan gagal. Bagaimanapun, terima kasih!
Java Xu
sudo apt-get clean membantu mendapatkan ruang kembali
frlan
Saya mengubah /usr/bin/pythonsymlink saya ke titik python3.5dan itu menyebabkan kesalahan yang sangat mirip dengan ini. Tidak yakin mengapa, mungkin karena python2.7deps yang rusak ketika saya mengubah symlink tanpa peringatan. IDK, meninggalkan ini di sini untuk pelancong masa depan
quietContest

Jawaban:

1

OK, melalui paket-paket, saya menemukan bahwa python-minimal tidak memiliki struct.py, tetapi python-minimal2.7 tidak.

Jadi, coba ini dan lihat apakah itu membantu Anda:

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

Jika bahkan itu tidak berhasil, mungkin $ PYTHONPATH Anda entah bagaimana kacau.

nano ~/.bashrc

Tambahkan baris export PYTHONPATH="${PYTHONPATH}:/usr/lib/python2.7"lalu

source ~/.bashrc

Dan coba pembaruan Anda lagi.

Chuck R
sumber
diedit untuk menambahkan "ekspor", itu agak diperlukan;)
Chuck R
Dikatakan "Tidak dapat menemukan paket python-minimal2.7". Apakah maksud Anda python2.7-minimal? Ketika saya mencoba menginstal ulang python2.7-minimal, masalah ketergantungan yang sama terjadi.
Java Xu
Hmm, maaf butuh waktu lama bagiku untuk kembali padamu. Coba sudo apt-get clean sudo apt-get update sudo apt-get upgrade.
Chuck R
1
Saya khawatir itu tidak berhasil. Setelah clean, updatedan upgrade, kemudian saya mencoba menginstal ulang python2.7-minimal, tetapi masalah ketergantungan yang sama muncul dan reinstallgagal lagi.
Java Xu
Sepertinya saya salah tentang paket yang mana. sebenarnya libpython2.7-minimal yang berisi struct.py. Pastikan sudah terpasang. Apa versi terbaru dari python2.7-minimal yang telah Anda instal? Petunjuk:dpkg -l | grep python2.7-minimal
Chuck R
1

Coba ini

sudo apt purge libpython*

Saya menghapus python2.7 dan 3.7, lalu menghapus file terkait dari sistem. Setelah itu saya menemukan saya tidak dapat menginstal ulang python2.7 Mencoba banyak metode yang masih tidak berfungsi, termasuk:

hapus tautan lunak

del virtual env dirs

autoremove

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

Kemudian saya menemukan beberapa file libpython dengan mencari seluruh sistem python. (Jangan rm file dari dir jika Anda tidak yakin.) Setelah menghapus libpython*paket (saya menghapusnya satu per satu.), Python berhasil diinstal.

Semoga ini bisa membantu beberapa orang memiliki masalah yang sama

Jay
sumber
0

Tidak tahu apakah ini akan membantu Anda sama sekali, ini sedikit menusuk dalam gelap, tetapi pastikan versi Python default Anda diatur ke 2.7.

Ada tiga file yang menjadi perhatian di / usr / bin:

python (symlink)
python2.7
python3 (symlink)

Jika Anda melakukannya, ls -l /usr/bin | grep pythonAnda akan melihat apa yang ditunjukkan oleh masing-masing symlink.

Jika itu menunjukkan Anda python -> python3atau python -> python3.3ada sesuatu yang salah. Pada titik ini Anda ingin:

rm /usr/bin/python
ln -s /usr/bin/python2.7 /usr/bin/python
Chuck R
sumber
Terima kasih untuk balasan Anda. Di saya /usr/bin, pythonsoft-linked ke python2.7.
Java Xu
Kenapa ini? Saya telah mengubah symlink saya ke titik python3.5, dan itu borked sejumlah besar paket python dan aptjuga. Mengapa saya tidak dapat melakukan default ke Python3? Apa cara yang benar?
quietContest