“ImportError: Немає модуля з іменем _struct”, що налаштовує python-minim


10

Під час запуску sudo apt-get upgradeз'являється помилка dpkg, яка перериває процес.

Деталі помилки:

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.

І ця проблема призводить до низки проблем залежності при обробці наступних пакетів:

 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

Нарешті, я нічого не можу зробити для цієї проблеми. А через кілька днів кореневий каталог заповнений, і я навіть не зміг видалити жодне програмне забезпечення через цю проблему.


можливий дублікат askubuntu.com/q/270011/169736
Braiam

@Braiam, я вже знаходив це питання раніше. Відповіді пропонуються перевстановити python. Я спробував, і не вдалося. Все одно, дякую!
Java Xu

sudo apt-get clean допомагає повернути трохи місця
frlan

Я змінив /usr/bin/pythonсимпосилання, щоб вказати, python3.5і це спричинило дуже подібну помилку до цього. Не впевнений, чому, ймовірно, це стосується того, що вже не було python2.7депов, які зламалися, коли я змінив симпосилання без попередження. ІДК, залишивши це тут для майбутніх мандрівників
тихий конкурс

Відповіді:


8

Дотримуйтесь рішення Сорооша. Зламаний python (2.7) після побудови та встановлення python 2.6

Введіть sudo -iдля доступу до кореня.

Вставте команду і почекайте близько 20 хвилин. Працює ідеально.

for pkg in $(dpkg --get-selections | egrep -v 'deinstall' | egrep python | awk '{print $1}'); do  apt-get -y --force-yes install --reinstall $pkg ; done

1

Гаразд, переглядаючи пакунки, я виявив, що в python-minim не має struct.py, але python-minimal2.7.

Отже, спробуйте це і подивіться, чи допоможе вам це:

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

Якщо навіть це не працює, можливо, ваш $ PYTHONPATH заплутався якось.

nano ~/.bashrc

export PYTHONPATH="${PYTHONPATH}:/usr/lib/python2.7"Потім додайте рядок

source ~/.bashrc

І спробуйте оновити ще раз.


відредаговано, щоб додати "експорт", це начебто потрібно;)
Чак R

Там написано "Неможливо знайти пакет python-minimal2.7". Ви маєте на увазі python2.7-мінімальний? Коли я намагаюся перевстановити python2.7-мінімальний, виникає та сама проблема залежності.
Java Xu

Хм, вибачте, що так довго мені довелося повернутися до вас. Спробуйте sudo apt-get clean sudo apt-get update sudo apt-get upgrade.
Чак Р

1
Я боюся, що це не працює. Після clean, updateі upgrade, потім я намагаюся перевстановити python2.7-minimal, але з’являється та сама проблема залежності і reinstallзнову виходить з ладу.
Java Xu

Схоже, я помилявся про який пакунок. це фактично libpython2.7-мінімальний, який містить struct.py. Переконайтесь, що встановлено. Яка поточна версія python2.7-мінімальна, яку ви встановили? Підказка:dpkg -l | grep python2.7-minimal
Чак R

1

Спробуйте це

sudo apt purge libpython*

Я видалив python2.7 і 3.7, потім видалив пов'язані файли з системи. Після цього я виявив, що не можу перевстановити python2.7 Перепробував багато методів, які все ще не працюють, включаючи:

видалити м'які посилання

del virtual dir dir

autoremove

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

Потім я знайшов кілька файлів libpython, шукаючи всю систему python. (Не rm файли з dir, якщо ви не впевнені.) Після видалення libpython*пакунків (я видаляв їх один за одним.), Python успішно встановлений.

Сподіваюсь, це може допомогти деяким людям мати ті ж проблеми


0

Не знаєте, чи це взагалі допоможе вам, це трохи ударить у темряві, але переконайтесь, що для вашої версії Python за замовчуванням встановлено 2,7.

У / usr / bin є три файли, що викликають занепокоєння:

python (symlink)
python2.7
python3 (symlink)

Якщо ви це зробите, ls -l /usr/bin | grep pythonви побачите, на що вказує кожне символьне посилання.

Якщо це показує вам python -> python3або python -> python3.3щось не так. У цей момент ви захочете:

rm /usr/bin/python
ln -s /usr/bin/python2.7 /usr/bin/python

Дякуємо за Ваш відповідь. По-моєму /usr/bin, pythonм'який зв’язок python2.7.
Java Xu

Чому це? Я змінив своє символьне посилання, щоб вказати на це python3.5, і воно наклало величезну кількість пакетів python apt. Чому я не можу встановити Python3 за замовчуванням? Який правильний спосіб?
silentContest
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.