5

running Ubuntu 12.04, I had the usual python 2.7 in place .

I needed python 2.6 , so I downloaded the source and did

./configure
make
sudo make install

A mistake, as I did not want to replace my system-wide python . Now some programs stopped working , e.g. update-manager with

ImportError: No module named gi.repository

I used update-alternatives to make python 2.7 default again, but many python applications still won't start up because of some missing modules .

Can someone give a hint what happened and what the best way to fix it would be?

Thanks in advance.

Edit :

I could get some functionality of apt-get to work by setting my own hard link from /etc/python to /etc/python2.7 . ( So I guess using update-alternatives really did not do much good eithe. ) I did a dist-upgrade , which basically worked, but a lot of the package managing via apt-get is still broken. In particular, a problem with python-minimal prevents many other installations of packages I wanted to do .

Setting up python-minimal (2.7.3-0ubuntu7) ...
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

PS: Building 2.7 from source always did exit (also before dist-ugprade or update-alternatives) with

make: *** [libinstall] Error 1

Currently, on make , there are more issues (" Python build finished, but the necessary bits to build these modules were not found: _bsddb bsddb185 bz2
dl imageop sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name. ")

As this is a little over my head , I guess I am just better off with a fresh install from scratch .

Braiam
  • 67,791
  • 32
  • 179
  • 269
mfit
  • 151

4 Answers4

5

I had a similar problem when I downgraded from debian/Testing to debian/Stable recently. I guess somewhere in the process, python modules got corrupted. Purging and reinstalling python was, as it was pointed out, a bit draconian. Thankfully, I came across the following http://ubuntuforums.org/showthread.php?t=735693

Following this suggestion, I tried the command

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

to reinstall anything that has python in its name, and that solved the problem.

Soroosh
  • 151
  • 1
  • 1
  • This saved me... had to run it a couple of times until all package errors were resolved. Thanks!!! – Alan Mar 16 '17 at 18:19
  • I get an infinite loop with unmet dependencies errors when executing the code provided. Can I force it do execute anyway? – kleinfreund Apr 07 '17 at 15:15
2

Your python 2.6 install has probably changed lots of settings and paths.

Your best bet is to reinstall the default python interpreter

sudo apt-get --reinstall install python python-support

I can't test it, but I hope that it works. Good luck.

If it doesn't work the only other idea that I have is to install python 2.7 from source, and afterwards trying to reinstall the default one again.

Javier Rivera
  • 35,153
  • --reinstall sounded good but did not work , in fact due to a python error that came up in the process of running apt-get . Thanks anyways , though – mfit Mar 19 '13 at 17:40
  • Edited the answer, try to complie 2.7 from source and re-do the reinstall vodoo. – Javier Rivera Mar 19 '13 at 18:06
2

I ran into essentially the same issue, but for python-minimal 2.7.11-1.

cat /var/lib/dpkg/info/python-minimal.postinst

You should get something like this:

#! /bin/sh
set -e

python2.7 -m compileall /usr/share/python/ >/dev/null

Run the command without redirect to >/dev/null (edit the file, or: sudo python2.7 -m compileall /usr/share/python/). This will show you where post installation configuration is failing.

Ex:

Listing /usr/share/python/penemue/lib/python2.7/site-packages/gevent 
Compiling /usr/share/python/penemue/lib/python2.7/site-packages/gevent/_socket3.py ...
  File "/usr/share/python/penemue/lib/python2.7/site-packages/gevent/_socket3.py", line 183
    def makefile(self, mode="r", buffering=None, *,
                                                  ^
SyntaxError: invalid syntax

In my case, it was a custom python package (built using dh-virtualenv) that lived under /usr/share/python. I had to run dpkg -P penemue and ultimately remove the /usr/share/python/penemue directory. I might have been able to just move the /usr/share/python/penemue directory out of the way.

Once I got rid of the bad code, running sudo apt-get install -f resolved the issues.

ytjohn
  • 391
0

My guess is that you accidentally got overwrote the default python directory (somehow) and 2.6 is incompatible with what update manager/apps need.

Try sudo apt-get purge python2 then sudo apt-get install python2. This should purge python from your system and reinstall it, making it the default Python again.

Only other idea is that you got a bad source for 2.6 and it as such made a bad install that wasn't bad enough to be detected by make???

  • 1
    Doing apt-get purge python will remove a LOT of packages and components which I would have to re-install manually after re-installing python (?) . Would like to keep that as a last resort only .. – mfit Mar 19 '13 at 16:58
  • true. Though, if just reinstalling 2.7 via apt-get --reinstall install python2 python2-support doesn't work, it will be the best bet to go with. – RPiAwesomeness Mar 19 '13 at 17:01
  • Yes, --reinstall does not work . When purgeing, something went wrong, too . At the moment, I cannot use apt-get, because of (python) errors e.g. installing gtk components like checkbox , etc. I will now try to reset python - as this still seems to be the core of the problem - somehow manually. – mfit Mar 19 '13 at 17:40