如何在Ubuntu 15.04上升级Python的setuptools至12.2以上。

apt软件包似乎是12.2版本。
如果我运行sudo pip install -U setuptools,版本似乎仍然停留在12.2。
$ python
>>> import pkg_resources
>>> r = pkg_resources.require(["setuptools"])[0]
>>> print("setuptools version: %s" % r.version)
setuptools version: 12.2

[编辑]
刚刚注意到它不会覆盖setuptools的操作系统版本。
Downloading/unpacking pip from https://pypi.python.org/packages/py2.py3/p/pip/pip-7.1.2-py2.py3-none-any.whl#md5=5ff9fec0be479e4e36df467556deed4d
  Downloading pip-7.1.2-py2.py3-none-any.whl (1.1MB): 1.1MB downloaded
Downloading/unpacking setuptools from https://pypi.python.org/packages/3.4/s/setuptools/setuptools-18.3.2-py2.py3-none-any.whl#md5=58c1e15fe0c124ab0880a2691f232434
  Downloading setuptools-18.3.2-py2.py3-none-any.whl (462kB): 462kB downloaded
Installing collected packages: pip, setuptools
  Found existing installation: pip 1.5.6
    Not uninstalling pip at /usr/lib/python2.7/dist-packages, owned by OS
  Found existing installation: setuptools 12.2
    Not uninstalling setuptools at /usr/lib/python2.7/dist-packages, owned by OS
Successfully installed pip setuptools
Cleaning up...

[/编辑]


1sudo pip install -U pip setuptools - A.B.
@A.B 刚刚尝试了一下,发现它不会覆盖操作系统的版本...这可能是问题所在。 - Stuart Axon
2个回答

  1. 删除存储库版本

    sudo apt-get remove python-setuptools
    
  2. 如有必要,重新安装pip

    wget https://bootstrap.pypa.io/get-pip.py
    sudo -H python get-pip.py
    
  3. 通过pip安装setuptools

    sudo -H pip install -U pip setuptools
    

现在,重新开始你的测试。
% python
Python 2.7.9 (default, Apr  2 2015, 15:33:21) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg_resources
>>> r = pkg_resources.require(["setuptools"])[0]
>>> print("setuptools version: %s" % r.version)
setuptools version: 18.3.2

注意

安装任何依赖于 python-setuptoolspython-pip 的软件包都会重新引入这些软件包,因此您可能需要重复此过程!


同样适用于CentOS操作系统 - Abhishek Dujari

A.B.提出的解决方案可能还不够完善:在最新版本的setuptools中,pkg_resources是一个包,而以前它只是一个单独的模块。
按照描述的方式更新setuptools将会留下一个过时的pkg_resources.py{,c}文件,这可能导致在导入setuptools时出现以下错误:
AttributeError: 'module' object has no attribute 'packaging'

要删除它,请执行以下操作:

  1. 找出过时的 pkg_resources 模块所在的位置:

    $ python -c 'import pkg_resources; print(pkg_resources.__file__)'
    /usr/lib/python2.7/dist-packages/pkg_resources.pyc
    
  2. 删除该文件及其对应的 .py 文件:

    $ sudo rm /usr/lib/python2.7/dist-packages/pkg_resources.py*
    
警告
这个文件可能是通过“python-pkg-resources”包安装的。因此,更新或重新安装该软件包将恢复过时的模块!同时请注意,您正在操作一个本应由“apt”管理的文件。

1我接受了A.B.的答案,因为它已经完成了大部分工作,但如果可以两个都接受的话,我会更好。我还没有尝试过这个,因为我已经升级了Ubuntu,并且有点担心在上面搞setuptools,我可能需要在虚拟机中尝试一下看会发生什么。 - Stuart Axon