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 installA 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.repositoryI 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 255PS:Building 2.7 from source always did exit (also before dist-ugprade or update-alternatives) with
make: *** [libinstall] Error 1Currently, 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 .
04 Answers
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
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 ; doneto reinstall anything that has python in its name, and that solved the problem.
2Your 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-supportI 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.
2I 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/nullRun 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 syntaxIn 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.
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???
3