我正在设置我的第一个Python包,如here所述,似乎有必要完成Python 2.7.13。我没有意识到Python 2.7.12对于Ubuntu的健康状况是多么完整,我将2.7.12 dirs(/usr/local/lib/python2.7/)移动到备用dirs并用2.7.13 dirs替换它们并删除了python3。这导致了一系列问题,最终杀死了我的桌面(没有发射器,没有alt-t终端),经过漫长的战斗,我需要将alt-F1转换为非GUI终端,撤消目录交换,并详细解释{{ 3}}之后
sudo apt-get install --reinstall python2.7
sudo apt-get install python3-all
和
sudo apt-get install ubuntu-desktop
事情现在几乎正常了,除非我因为缺乏ctypes而无法重新安装pip(使用ipython等)。我愿意重新安装Ubuntu,但前提是我必须这样做。
jeremy@jr:~$ 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
据我所知,目前的情况如何检查:
jeremy@jr:~$ echo $PYTHONHOME
/usr/local/lib/python2.7:/usr/local/lib/python2.7.12
jeremy@jr:~$ 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:
jeremy@jr:~$ which python
/usr/bin/python
jeremy@jr:~$ 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看起来很好,有一堆来自_abcoll.py和zipfile.pyc的脚本。
pip也被打破了,给出了错误
jeremy@jr:/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
哪个
jeremy@jr:/usr/src/Python-2.7.12$ sudo apt-get install --reinstall python-pkg-resources
无法修复(重新安装后出现上述错误)
问题是,我如何修复我看似有点破损的python安装,修复ctypes,pip和其他任何可能丢失的部分?
jeremy@jr:~$ 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 :(得分: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.13超过2.7.12;更可能是另一部分,例如python-setuptools或python2.7-dev。 Ubuntu从Debian继承了Python系统相当精细的分割。
可以使用apt pin特定包来替换源。例如,很可能将Ubuntu Xenial与Zesty的Python软件包混合使用,得到2.7.13。
答案 1 :(得分:0)
解决了,通过取消设置$ PYTHONPATH - 来自某些提示here关于ubuntu的默认python和'vanilla python'之间的差异,似乎设置$ PYTHONPATH是允许python运行的唯一方式
export PYTHONPATH=/usr/local/lib/python2.7:/usr/local/lib/python2.7/dist-packages
(/ usr / local / lib而不是/ usr / lib)我实际上也阻止了vanilla python的运行。
在取消设置PYTHONPATH之前的sys.path:
/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
取消设置PYTHONPATH后的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
)