"Ningún módulo llamado _struct" después de compilar e instalar Python 2.6 manualmente

"Ningún módulo llamado _struct" después de compilar e instalar Python 2.6 manualmente

Al ejecutar Ubuntu 12.04, tenía instalado el Python 2.7 habitual.

Necesitaba Python 2.6, así que descargué la fuente y lo hice.

./configure
make
sudo make install

Un error, ya que no quería reemplazar mi Python en todo el sistema. Ahora algunos programas dejaron de funcionar, por ejemplo, el administrador de actualizaciones con

ImportError: No module named gi.repository

Utilicé alternativas de actualización para hacer que Python 2.7 volviera a ser el predeterminado, pero muchas aplicaciones de Python aún no se inician debido a que faltan algunos módulos.

¿Alguien puede darnos una pista de lo que pasó y cuál sería la mejor manera de solucionarlo?

Gracias de antemano.

Editar :

Podría obtener algunas funciones de apt-get para trabajar configurando mi propio enlace físico desde /etc/python a /etc/python2.7. (Así que supongo que usar alternativas de actualización tampoco sirvió de mucho). Hice un dist-upgrade, que básicamente funcionó, pero gran parte del paquete que se administra a través de apt-get todavía está roto. En particular, unproblema con python mínimoimpide muchas otras instalaciones de paquetes que quería hacer.

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

PD: Construyendo 2.7 desde la fuentesiempre salía (también antes de dist-ugprade o update-alternatives) con

make: *** [libinstall] Error 1

Actualmente, en make, hay más problemas ("La compilación de Python finalizó, pero no se encontraron los bits necesarios para construir estos módulos: _bsddb bsddb185 bz2
dl imageop sunaudiodev
Para encontrar los bits necesarios, busque en setup.py en detect_modules() el nombre del módulo ").

Como esto se me escapa un poco, supongo que estoy mejor con una instalación nueva desde cero.

Respuesta1

Tuve un problema similar cuando bajé de Debian/Testing a Debian/Stable recientemente. Supongo que en algún momento del proceso, los módulos de Python se corrompieron. Purgar y reinstalar Python fue, como se señaló, un poco draconiano. Afortunadamente, me encontré con lo siguiente http://ubuntuforums.org/showthread.php?t=735693

Siguiendo esta sugerencia, probé el comando

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

reinstalar todo lo que tenga python en su nombre, y eso resolvió el problema.

Respuesta2

Su instalación de Python 2.6 probablemente haya cambiado muchas configuraciones y rutas.

Su mejor opción es reinstalar el intérprete de Python predeterminado.

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

No puedo probarlo, pero espero que funcione. Buena suerte.

Si no funciona, la única otra idea que tengo es instalar Python 2.7 desde la fuente y luego intentar reinstalar el predeterminado nuevamente.

Respuesta3

Me encontré esencialmente con el mismo problema, pero para Python-minimal 2.7.11-1.

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

Deberías obtener algo como esto:

#! /bin/sh
set -e

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

Ejecute el comando sin redirigir a >/dev/null (edite el archivo o:) sudo python2.7 -m compileall /usr/share/python/. Esto le mostrará dónde falla la configuración posterior a la instalación.

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

En mi caso, era un paquete de Python personalizado (creado usando dh-virtualenv) que vivía en /usr/share/python. Tuve que ejecutar dpkg -P penemuey finalmente eliminar el /usr/share/python/penemuedirectorio. Podría haber podido simplemente quitar el /usr/share/python/penemuedirectorio del camino.

Una vez que me deshice del código incorrecto, ejecutar sudo apt-get install -fresolvió los problemas.

Respuesta4

Supongo que accidentalmente sobrescribiste el directorio predeterminado de Python (de alguna manera) y 2.6 es incompatible con lo que necesitan el administrador de actualizaciones/aplicaciones.

Inténtalo sudo apt-get purge python2entonces sudo apt-get install python2. Esto debería eliminar Python de su sistema y reinstalarlo, convirtiéndolo nuevamente en el Python predeterminado.

La única otra idea es que obtuviste una mala fuente para 2.6 y, como tal, realizó una mala instalación que no estuvo mal.suficientepara ser detectado por marca???

información relacionada