Сломанный python (2.7) после ручной сборки и установки python 2.6

под управлением Ubuntu 12.04 у меня был установлен обычный python 2.7.

Мне нужен был python 2.6, поэтому я скачал исходный код и сделал

./configure
make
sudo make install

ошибку, поскольку я этого не сделал хочу заменить мой общесистемный питон. Теперь некоторые программы перестали работать, например менеджер обновлений с

ImportError: No module named gi.repository

Я использовал альтернативы обновления, чтобы снова установить Python 2.7 по умолчанию, но многие приложения Python по-прежнему не запускаются из-за некоторых отсутствующих модулей.

Может кто-нибудь дать намек на то, что случилось, и какой лучший способ это исправить?

Заранее спасибо.

Редактировать:

Я мог бы получить некоторые функциональные возможности apt-get to work, установив собственную жесткую ссылку из / etc / python в /etc/python2.7. (Так что я думаю, что использование альтернатив обновлений действительно не принесло пользы.) Я сделал 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

PS: Сборка 2.7 из источника всегда выходила (также перед dist-ugprade или update-альтернативами) с

make: *** [libinstall] Error 1

В настоящее время у make есть и другие проблемы («Сборка Python завершена, но необходимые биты для сборки этих модулей не найдены: _bsddb bsddb185»). bz2
dl imageop sunaudiodev
Чтобы найти необходимые биты, посмотрите в файле setup.py в detect_modules () имя модуля. ")

Так как это немного закончилось моя голова, я думаю, мне просто лучше с новой установки с нуля.

5
задан 20 March 2013 в 15:47

4 ответа

Ваша установка на python 2.6, вероятно, изменила множество настроек и путей.

Лучше всего переустановить интерпретатор Python по умолчанию.

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

Я не могу его протестировать, но надеюсь, что он работает. Удачи.

Если это не работает, единственная другая идея, которая у меня есть, это установить Python 2.7 из исходного кода, а затем снова попытаться переустановить стандартный по умолчанию.

0
ответ дан 20 March 2013 в 15:47

У меня была подобная проблема, когда я недавно понизил от 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 на его имя, и это решило проблему.

5
ответ дан 20 March 2013 в 15:47

Я столкнулся по существу с той же проблемой, но для Python-минимальной 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.

Как только я избавился от плохого кода, запуск sudo apt-get install -f решил проблемы.

0
ответ дан 20 March 2013 в 15:47

Я предполагаю, что вы случайно переписали директорию Python по умолчанию (каким-то образом), а 2.6 несовместима с тем, что нужно менеджеру обновлений / приложениям.

Попробуйте sudo apt-get purge python2, затем sudo apt-get install python2. Это должно удалить Python из вашей системы и переустановить его, сделав его снова Python по умолчанию.

Лишь другая идея состоит в том, что у вас плохой исходный код для 2.6, и он как таковой сделал плохую установку, которая была не плохой , достаточной для обнаружения make ???

0
ответ дан 20 March 2013 в 15:47

Другие вопросы по тегам:

Похожие вопросы: