
運行 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-upprade 或 update-alternatives 之前)
make: *** [libinstall] Error 1
目前,在 make 上,有更多問題(「Python 建置已完成,但找不到建置這些模組所需的位元, 請在setup.py 中的detector_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 python2
那就試試吧sudo apt-get install python2
。這應該會從系統中清除 python 並重新安裝它,使其再次成為預設 Python。
唯一的另一個想法是你得到了一個糟糕的 2.6 來源,因此它造成了一個糟糕的安裝,但還不錯足夠的被make偵測到?