2017-08-20 49 views
-1

我正在設置我的第一個Python軟件包,如here所述,似乎有必要讓Python 2.7.13完成。沒有意識到Python 2.7.12對Ubuntu的健康有多麼重要,我將2.7.12目錄(/usr/local/lib/python2.7/)移動到了備份目錄,並用2.7.13 dirs替換了它們,並刪除了python3。這導致了一系列的問題,最終導致我的桌面(沒有啓動器,沒有alt-t終端),在經過漫長的戰鬥後我需要將alt-F1變成非GUI終端,撤銷目錄交換,並且詳細地在here之後Python卸載危機

sudo apt-get install --reinstall python2.7 
sudo apt-get install python3-all 

sudo apt-get install ubuntu-desktop 

現在情況基本正常,除了我無法重新安裝PIP(使用IPython的主要)由於缺乏ctypes的。我願意重新安裝Ubuntu,但只有在我真的必須重新安裝時。

[email protected]:~$ python 
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import ctypes 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/ctypes/__init__.py", line 7, in <module> 
    from _ctypes import Union, Structure, Array 
ImportError: No module named _ctypes 

事務的當前狀態,據我知道如何檢查:

[email protected]:~$ echo $PYTHONHOME 
/usr/local/lib/python2.7:/usr/local/lib/python2.7.12 
[email protected]:~$ echo $PYTHONPATH 
/usr/local/lib/python2.7:/usr/local/lib/python2.7.12:/usr/local/lib/python2.7/site-packages:/home/jeremy/sw/caffe/python:/home/jeremy/sw/models/slim:/home/jeremy/sw/models:/home/jeremy/sw/models/utils: 
[email protected]:~$ which python 
/usr/bin/python 
[email protected]:~$ ls -l /usr/bin/python* 
lrwxrwxrwx 1 root root  16 Aug 17 23:37 /usr/bin/python -> /usr/bin/python2 
lrwxrwxrwx 1 root root  9 Dec 10 2015 /usr/bin/python2 -> python2.7 
-rwxr-xr-x 1 root root 3546104 Nov 19 2016 /usr/bin/python2.7 
lrwxrwxrwx 1 root root  33 Nov 19 2016 /usr/bin/python2.7-config -> x86_64-linux-gnu-python2.7-config 
lrwxrwxrwx 1 root root  16 Dec 10 2015 /usr/bin/python2-config -> python2.7-config 
lrwxrwxrwx 1 root root  9 Mar 23 2016 /usr/bin/python3 -> python3.5 
-rwxr-xr-x 2 root root 4460336 Nov 17 2016 /usr/bin/python3.5 
-rwxr-xr-x 2 root root 4460336 Nov 17 2016 /usr/bin/python3.5m 
lrwxrwxrwx 1 root root  10 Mar 23 2016 /usr/bin/python3m -> python3.5m 
lrwxrwxrwx 1 root root  16 Dec 10 2015 /usr/bin/python-config -> python2.7-config 

/usr/local/lib/python2.7看起來OK,帶着一幫來自_abcoll.py腳本zipfile.pyc。

點子也斷了,給人的錯誤

[email protected]:/usr/src/Python-2.7.12$ pip install ctypes 
Traceback (most recent call last): 
    File "/usr/local/bin/pip", line 5, in <module> 
    from pkg_resources import load_entry_point 
ImportError: No module named pkg_resources 

[email protected]:/usr/src/Python-2.7.12$ sudo apt-get install --reinstall python-pkg-resources 

不能解決(同樣的錯誤上面重新安裝後出現)

的問題是,我該如何解決我的顯然有點破碎的蟒蛇安裝,以解決ctypes,點和任何其他可能缺少的部分?

[email protected]:~$ ls /usr/local/lib/python2.7/ctypes/ 
_endian.py _endian.pyc __init__.py __init__.pyc macholib test util.py util.pyc wintypes.py wintypes.pyc 
+0

爲什麼不直接將包文件解壓縮到文件系統中?從嚴重的腐敗中恢復過來,我已經這麼做了幾次。之後從未有過單一的問題。 – user1643723

+0

@coldspeed,問題是,如何解決ctypes問題和任何可能潛在的問題 –

+0

@ user1643723,你可以填補我如何做到這一點? –

回答

0

你已經重新安裝了一個在/ usr/lib/python中有東西的軟件包,但不是全部。特別是ctypes在libpython2.7-stdlib中。你可以問什麼是那裏的包管理器,並與像重新安裝所有(可怕的組合提前):

sudo apt-get install --reinstall `dpkg -S /usr/lib/python2.7 | sed -e 's%: /usr/lib/python2.7%%' -e 's%, % %g'` 

一般情況下,請不要修改系統目錄如/ usr沒有包管理器的幫助。它混淆了系統對存在或不存在的想法。有自己的安裝路徑,如/ opt和/ usr/local。在這種情況下,看起來你很幸運,即使仍然有效。

此外,我覺得你不太需要2.7.12超過2.7.12;更可能是另一部分,如python-setuptools或python2.7-dev。 Ubuntu從Debian中繼承了Python系統的細微分割。

它可能與易於pin特定的軟件包來替代來源。例如,很可能有一個Ubuntu Xenial與來自Zesty的Python軟件包混合使用以獲得2.7.13。

+0

「在這種情況下,你似乎很幸運,即使仍然有效」 - apt實際上相當健壯,並且沒有直接依賴python包。現在,如果有問題發生在Gentoo上,其中包管理器本身是用Python編寫的...... – user1643723

+0

謝謝@yann,但在apt-get安裝之後:(python-setuptools python-pyorbit python-gnome2 python-gi python-wheel python2.7 python-pkg-resources python-pip lsb-release python-tk python-tz unity-lens-photos gir1.2-accounts-1.0),ctypes錯誤仍然存​​在 –

+0

我會期望這個列表包含libpython2 .7-stdlib在Debian中包含ctypes。當然,對於Python 3也有類似的設置。至於apt,通常可以工作(儘管如果有必要,可以使用gzip,tar和ar來完成apt和dpkg的所有工作),但是它可能很容易停留在特定的包上,而不是配置正確和這樣的。 –

0

解決,通過取消$ PYTHONPATH - 從Ubuntu的默認Python和「香草蟒蛇」之間的差別一些提示here似乎已經設置在被允許的唯一途徑$ PYTHONPATH Python來運行

export PYTHONPATH=/usr/local/lib/python2.7:/usr/local/lib/python2.7/dist-packages 

(/ usr/local/lib而不是/ usr/lib)我blv實際上也阻止了vanilla python的運行。未設置PYTHONPATH前

的sys.path:未設置PYTHONPATH後

/usr/local/lib/python2.7 
/usr/local/lib/python2.7/dist-packages 
/usr/local/lib/python2.7/site-packages 
/usr/local/lib/python2.7/lib/python2.7 
/usr/local/lib/python2.7/lib/python2.7/plat-x86_64-linux-gnu 
/usr/local/lib/python2.7/lib/python2.7/lib-tk 
/usr/local/lib/python2.7/lib/python2.7/lib-old 
/usr/local/lib/python2.7/lib/python2.7/lib-dynloa 

的sys.path:

>>> print('\n'.join(sys.path)) 

/usr/local/lib/python2.7/dist-packages/stevedore-1.15.0-py2.7.egg 
/usr/local/lib/python2.7/dist-packages/enum34-1.1.6-py2.7.egg 
/usr/local/lib/python2.7/dist-packages/pbr-1.10.0-py2.7.egg 
/usr/local/lib/python2.7/dist-packages/PIMS-0.3.3+105.g1040b5f-py2.7.egg 
/usr/local/lib/python2.7/dist-packages/slicerator-0.9.8-py2.7.egg 
/usr/local/lib/python2.7/dist-packages/pip-9.0.1-py2.7.egg 
/usr/lib/python2.7 
/usr/lib/python2.7/plat-x86_64-linux-gnu 
/usr/lib/python2.7/lib-tk 
/usr/lib/python2.7/lib-old 
/usr/lib/python2.7/lib-dynload 
/usr/local/lib/python2.7/dist-packages 
/usr/lib/python2.7/dist-packages 
/usr/lib/python2.7/dist-packages/gtk-2.0 
/usr/lib/pymodules/python2.7 
/usr/lib/python2.7/dist-packages/ubuntu-sso-client 

在做未設置PYTHONPATH解決了這個問題(後當然所有其他步驟重建桌面具體如下:

sudo apt-get remove ubuntu-desktop 
sudo apt-get install ubuntu-desktop 
sudo apt-get install --reinstall python2.7