Python 2.6을 수동으로 빌드하고 설치한 후 "_struct라는 모듈이 없습니다"

Python 2.6을 수동으로 빌드하고 설치한 후 "_struct라는 모듈이 없습니다"

Ubuntu 12.04를 실행하면서 일반적인 Python 2.7을 사용했습니다.

Python 2.6이 필요해서 소스를 다운로드하고 실행했습니다.

./configure
make
sudo make install

시스템 전반의 python 을 교체하고 싶지 않았기 때문에 실수였습니다. 이제 일부 프로그램이 작동을 멈췄습니다(예: update-manager 포함).

ImportError: No module named gi.repository

Python 2.7을 다시 기본값으로 만들기 위해 업데이트 대안을 사용했지만 일부 누락된 모듈로 인해 많은 Python 응용 프로그램이 여전히 시작되지 않습니다.

누군가 무슨 일이 일어났는지, 그리고 이를 해결하는 가장 좋은 방법이 무엇인지 힌트를 줄 수 있습니까?

미리 감사드립니다.

편집하다 :

/etc/python에서 /etc/python2.7로 내 하드 링크를 설정하면 apt-get의 일부 기능이 작동하도록 할 수 있습니다. (그래서 update-alternatives를 사용하는 것도 별로 좋은 결과를 내지 못했다고 생각합니다.) 기본적으로는 작동하는 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 <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

추신: 소스에서 2.7 빌드항상 종료했습니다(또한 dist-ugprade 또는 update-alternatives 이전에도).

make: *** [libinstall] Error 1

현재 make에는 더 많은 문제가 있습니다(" Python 빌드가 완료되었지만 이 모듈을 빌드하는 데 필요한 비트를 찾을 수 없습니다: _bsddb bsddb185 bz2
dl imageop sunaudiodev
필요한 비트를 찾으려면 detector_modules()의 setup.py에서 모듈 이름 ")

이것은 내 머리 위에 있는 일이기 때문에 처음부터 새로 설치하는 것이 더 나을 것 같습니다.

답변1

최근에 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이 포함된 항목을 다시 설치하면 문제가 해결됩니다.

답변2

Python 2.6 설치로 인해 많은 설정과 경로가 변경되었을 수 있습니다.

가장 좋은 방법은 기본 Python 인터프리터를 다시 설치하는 것입니다.

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

테스트할 수는 없지만 작동하길 바랍니다. 행운을 빌어요.

작동하지 않으면 소스에서 Python 2.7을 설치하고 나중에 기본 버전을 다시 설치하는 것이 유일한 다른 아이디어입니다.

답변3

본질적으로 동일한 문제가 발생했지만 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

내 경우에는 /usr/share/python 아래에 있는 사용자 정의 Python 패키지(dh-virtualenv를 사용하여 구축됨)였습니다. 나는 디렉토리를 실행 dpkg -P penemue하고 궁극적으로 제거 해야했습니다 /usr/share/python/penemue. /usr/share/python/penemue디렉토리를 다른 곳으로 옮길 수 있었을 수도 있습니다 .

잘못된 코드를 제거한 후 실행하면 sudo apt-get install -f문제가 해결되었습니다.

답변4

내 생각엔 당신이 실수로 기본 python 디렉토리를 (어쨌든) 덮어썼고 2.6이 업데이트 관리자/앱에 필요한 것과 호환되지 않는 것 같습니다.

sudo apt-get purge python2그럼 시도해 보세요 sudo apt-get install python2. 이렇게 하면 시스템에서 Python을 제거하고 다시 설치하여 다시 기본 Python으로 만듭니다.

유일한 다른 아이디어는 2.6에 대한 잘못된 소스를 얻었고 그로 인해 나쁘지 않은 잘못된 설치가 이루어졌다는 것입니다.충분한make에 의해 감지됩니까???

관련 정보