手动构建和安装python 2.6后损坏python(2.7)

运行Ubuntu 12.04,我有通常的python 2.7。

我需要python 2.6,所以我下载了源码并做了

./configure make sudo make install 

一个错误,因为我不想替换我的系统范围的python。 现在一些程序停止工作,例如更新管理器

 ImportError: No module named gi.repository 

我使用update-alternative来使python 2.7再次默认,但是由于一些缺少的模块,许多python应用程序仍然无法启动。

有人可以暗示发生了什么以及解决问题的最佳方法是什么?

提前致谢。

编辑:

我可以通过将自己的硬链接从/ etc / python设置为/etc/python2.7来获得apt-get的一些function。 (所以我猜使用更新替代品确实没有太多好处。)我做了一个dist-upgrade,它基本上有效,但很多通过apt-get管理的软件包仍然被破坏了。 特别是, python-minimal问题阻止了我想要做的许多其他软件包的安装。

 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  import struct File "/usr/local/lib/python2.7/struct.py", line 1, in  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: 从源代码构建2.7始终执行退出(也在dist-ugprade或update-alternatives之前)

 make: *** [libinstall] Error 1 

目前,在make上,还有更多问题(“Python构建完成,但找不到构建这些模块的必要位:_bsddb bsddb185 bz2
dl imageop sunaudiodev
要查找必要的位,请在detect_modules()中的setup.py中查找模块的名称。 “)

由于这有点过头了,我想我最好从头开始全新安装。

我最近从debian / Testing降级到debian / Stable时遇到了类似的问题。 我想在这个过程中的某个地方,python模块被破坏了。 正如所指出的那样,清除和重新安装python有点严厉。 谢天谢地,我遇到了以下http://ubuntuforums.org/showthread.php?t=735693

按照这个建议,我尝试了这个命令

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

重新安装其名称中包含python的任何内容,这解决了问题。

你的python 2.6安装可能已经改变了很多设置和路径。

最好的办法是重新安装默认的python解释器

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

我无法测试它,但我希望它有效。 祝好运。

如果它不起作用我唯一的另一个想法是从源安装python 2.7,然后再尝试重新安装默认的。

我遇到了基本相同的问题,但对于python-minimal 2.7.11-1。

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

你应该得到这样的东西:

 #! /bin/sh set -e python2.7 -m compileall /usr/share/python/ >/dev/null 

运行命令而不重定向到> / dev / null(编辑文件,或: sudo python2.7 -m compileall /usr/share/python/ )。 这将显示安装后配置失败的位置。

例如:

 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 

在我的例子中,它是一个自定义的python包(使用dh-virtualenv构建),它位于/ usr / share / python下。 我必须运行dpkg -P penemue并最终删除/usr/share/python/penemue目录。 我可能只是将/usr/share/python/penemue目录/usr/share/python/penemue了。

一旦我摆脱了糟糕的代码,运行sudo apt-get install -f解决了问题。

我的猜测是你不小心覆盖了默认的python目录(不知何故),2.6与更新管理器/应用程序需要的内容不兼容。

尝试sudo apt-get purge python2然后sudo apt-get install python2 。 这应该从你的系统中清除python并重新安装它,使它再次成为默认的Python。

只有其他的想法是你有一个不好的2.6来源,因此这样做了一个糟糕的安装, 不足以被make ???检测到