jak zaktualizować python setuptools> 12.2 na Ubuntu 15.04

11

Wygląda na to, że pakiet apt to 12.2

Jeśli uruchomię, sudo pip install -U setuptools wydaje się, że wersja nadal utknęła na 12.2

$ python
>>> import pkg_resources
>>> r = pkg_resources.require(["setuptools"])[0]
>>> print("setuptools version: %s" % r.version)
setuptools version: 12.2

[EDYTOWAĆ]

Zauważyłem, że nie zastąpi wersji setuptools dla systemu operacyjnego:

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...

[/EDYTOWAĆ]

Stuart Axon
źródło
1
sudo pip install -U pip setuptools
AB
@AB Właśnie wypróbowałem to i zauważyłem, że nie zastąpi wersji systemu operacyjnego ... to prawdopodobnie problem ..
Stuart Axon

Odpowiedzi:

18
  1. Usuń wersję repozytorium

    sudo apt-get remove python-setuptools
  2. W razie potrzeby zainstaluj pipponownie

    wget https://bootstrap.pypa.io/get-pip.py
    sudo -H python get-pip.py
  3. Zainstaluj setuptoolsprzezpip

    sudo -H pip install -U pip setuptools

A teraz zacznij test od nowa

% 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

Uwaga

Instalowanie dowolnego pakietu, który zależy od jednego python-setuptoolslub python-pipktóry przywróci te pakiety, może być konieczne powtórzenie tej procedury!

AB
źródło
działa również na centos
Abhishek Dujari
2

Rozwiązanie zaproponowane przez AB może nie wystarczyć: w najnowszej wersji setuptools pkg_resourcesjest pakietem, podczas gdy wcześniej był to tylko jeden moduł.

Aktualizacja setuptoolsw sposób opisany będzie zostawić zestarzeć pkg_resources.py{,c}wokół , co może prowadzić do następującego błędu podczas importowania setuptools:

AttributeError: 'module' object has no attribute 'packaging'

Aby go usunąć, wykonaj następujące czynności:

  1. Dowiedz się, gdzie pkg_resourcesznajduje się przestarzały moduł:

    $ python -c 'import pkg_resources; print(pkg_resources.__file__)'
    /usr/lib/python2.7/dist-packages/pkg_resources.pyc
  2. Usuń ten plik i jego .pyplik:

    $ sudo rm /usr/lib/python2.7/dist-packages/pkg_resources.py*

Ostrzeżenie

Ten plik mógł zostać zainstalowany za pośrednictwem python-pkg-resourcespakietu. Dlatego aktualizacja lub ponowna instalacja tego pakietu przywróci przestarzały moduł! Pamiętaj również, że zadzierasz z plikiem, który ma być kontrolowany apt.

kynan
źródło
1
Zaakceptowałem odpowiedź AB, jak to było w większości przypadków, ale gdybym mógł zaakceptować obie, zrobiłbym to. - Nie miałem jeszcze okazji tego wypróbować, ponieważ od tego czasu zaktualizowałem Ubuntu i jestem trochę ostrożny w kwestii bałagania się przy użyciu setuptools. Prawdopodobnie będę musiał spróbować tego na maszynie wirtualnej, aby zobaczyć, co się stanie.
Stuart Axon