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

update-alternatives を使用して 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
必要なビットを見つけるには、setup.py の detect_modules() でモジュール名を探します。 ")

これはちょっと私には難しすぎるので、最初から新規インストールしたほうが良いと思います。

答え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 python2sudo apt-get install python2これにより、システムから Python が削除され、再インストールされて、再びデフォルトの Python になります。

他に考えられるのは、2.6のソースコードが悪かったために、インストールが悪かったということだ。十分make によって検出される???

関連情報