10

When I run sudo apt-get upgrade, the dpkg error appears and interupts the process.

Error details:

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.

And this problem leads to a series of dependency problems when processing the following packages:

 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

Finally, nothing I can do for this problem. And several days later, the root directory is full and I even could not uninstall any software because of this problem.

Braiam
  • 67,791
  • 32
  • 179
  • 269
  • possible duplicated of http://askubuntu.com/q/270011/169736 – Braiam Jul 26 '13 at 13:03
  • @Braiam, I've found this question before. The answers are suggested to reinstall python. I've tried, and failed. Thanks anyway! – JavaNoScript Jul 29 '13 at 06:19
  • I changed my /usr/bin/python symlink to point to python3.5 and it caused a very similar error to this. Not sure why, probably to do with already having python2.7 deps that got broken when I changed the symlink without warning. IDK, leaving this here for future travelers – crackpotHouseplant Aug 22 '17 at 22:39

4 Answers4

8

Follow the solution by Soroosh. Broken python (2.7) after manually building and installing python 2.6

Enter sudo -i for root access.

Paste the command and wait about 20 minutes. Runs perfectly.

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

Try this

sudo apt purge libpython*

I removed python2.7 and 3.7, then deleted related files from the system. After that I found I can't reinstall python2.7 Tried many methods still not working, including :

remove soft links

del virtual env dirs

autoremove

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

Then I found some libpython files by searching python whole system.(Do not rm files from dir if you are not sure.) After removed libpython* packages(I removed them one by one.), python installed successfully.

Hope this can help some people have same problems

Jay
  • 131
  • 4
1

OK, going through the packages, I found that python-minimal does not have struct.py, but python-minimal2.7 does.

So, try this and see if it helps you out:

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

If even that does't work, perhaps your $PYTHONPATH is messed up somehow.

nano ~/.bashrc

Add the line export PYTHONPATH="${PYTHONPATH}:/usr/lib/python2.7" then

source ~/.bashrc

And try your update yet again.

Chuck R
  • 4,918
  • edited to add "export", it's kind of necessary ;) – Chuck R Aug 12 '13 at 08:47
  • It says "Unable to locate package python-minimal2.7". Do you mean python2.7-minimal? When I try to reinstall python2.7-minimal, the same dependency problem occurs. – JavaNoScript Aug 13 '13 at 11:08
  • Hmm, sorry it took so long for me to get back to you. Try sudo apt-get clean sudo apt-get update sudo apt-get upgrade. – Chuck R Aug 13 '13 at 21:31
  • 1
    I'm afraid that it doesn't work. After clean, update and upgrade, then I try to reinstall python2.7-minimal, but the same dependency problem appears and the reinstall fails again. – JavaNoScript Aug 14 '13 at 02:47
  • Looks like I was wrong about which package. it's actually libpython2.7-minimal that contains struct.py. Make sure that's installed. What is the current version of python2.7-minimal that you have installed? Hint: dpkg -l | grep python2.7-minimal – Chuck R Aug 14 '13 at 03:01
  • (1) I search libpython2.7-minimal in synaptic, and there's no results. (2) The version of my python2.7-minimal is 2.7.3-5ubuntu4.1. (3) My ubuntu is 12.10. Can I just download a libpython2.7-minimal(Raring version) and install it? – JavaNoScript Aug 14 '13 at 08:35
  • Possibly. It depends on the dependant package. Sometimes they depend on a specific version, but with something as widely used as python, I don't image that there would be any packages that have a python2.7-minimal = 2.7.3-Subuntu4.1 dependancy. – Chuck R Aug 14 '13 at 08:47
  • Try installing this: http://packages.ubuntu.com/quantal/amd64/python2.7-minimal/download. It's the same version as you have installed, but struct is clearly in there. Don't think you can do a --reinstall with the same version since it's updated now. But, once you install that, try to do your upgrade once more. – Chuck R Aug 14 '13 at 08:54
  • It's indeed that I can't install this one:python2.7-minimal_2.7.3-5ubuntu4_amd64.deb. It said that A later version has been installed. – JavaNoScript Aug 14 '13 at 09:29
  • Great! I've done sudo apt-get install --reinstall python3.6-minimal and that's save my life! – Claude COULOMBE Oct 21 '18 at 07:59
0

Don't know if this is going to help you out at all, it's a bit of a stab in the dark, but make sure your default Python version is set to 2.7.

There are three files of concern in /usr/bin:

python (symlink)
python2.7
python3 (symlink)

If you do ls -l /usr/bin | grep python you will see what each symlink points to.

If it shows you python -> python3 or python -> python3.3 there's something wrong. At this point you will want to:

rm /usr/bin/python
ln -s /usr/bin/python2.7 /usr/bin/python
Chuck R
  • 4,918
  • Thanks for your reply. In my /usr/bin, python is soft-linked to python2.7. – JavaNoScript Aug 12 '13 at 02:00
  • 1
    Why is this? I had changed my symlink to point to python3.5, and it borked a huge amount of python packages and apt as well. Why can't I default to Python3? What is the correct way? – crackpotHouseplant Aug 22 '17 at 22:38