Jak zaktualizować PIP do najnowszej wersji?


51

Zainstalowałem pip używając get-pip.pytego, co pip freezepowoduje błąd poniżej

Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/freeze.py", line 74, in run
    req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags)
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 299, in from_dist
    assert len(specs) == 1 and specs[0][0] == '=='
AssertionError

Storing debug log for failure in /home/simon/.pip/pip.log

Więc sprawdziłem, że 1.7 jest najnowszy. Jeśli wykonałem poniższe kroki i nie aktualizuję się ... Pomóż mi tutaj ...

simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
simon@simon-OptiPlex-780:~/Nightybuild$ pip install -U pip
Downloading/unpacking pip
  Downloading pip-7.1.2-py2.py3-none-any.whl (1.1MB): 1.1MB downloaded
Installing collected packages: pip
Successfully installed pip
Cleaning up...
simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)

1
sudo -H pip3 install
upgrade

Odpowiedzi:


54

Zwykle uruchamiam następujące polecenia, aby uaktualnić zarówno pip2(= pipdomyślnie), jak i pip3:

sudo -H pip3 install --upgrade pip
sudo -H pip2 install --upgrade pip

Musisz upewnić się, że uaktualniasz wersję (dla Python 2 lub 3), którą chcesz zareagować na polecenie pipbez numeru, na końcu.

Należy również pamiętać, że dzięki temu stare wersje apt-getpakietu są instalowane za pośrednictwem dowolnego menedżera pakietów, ale dodaje nowe wersje, które nie mają nic wspólnego z pakietami systemowymi. Te pipkorzystne będą Zainstalowane pakiety, ale nie należy usuwać apt-getZainstalowane te albo, ponieważ menedżer pakietów nie może wiedzieć, że każda pipwersja jest zainstalowana inaczej.


3
Dlaczego warto ustawić się w domu sudo -H?
Léo Léopold Hertz -

11
@Masi Ponieważ pipchce zapisać pobrane pliki gdzieś w pamięci podręcznej. Zaimplementowano je, aby umieścić je w podfolderze katalogu domowego bieżącego użytkownika. Jeśli uruchomisz go bez -Hniego, narzeka, ponieważ wykrywa, że ​​aktualnie ustawiony katalog domowy (zwykły użytkownik) nie pasuje do użytkownika, który działa jako (root). Gdyby zapisał swoje pliki w twoim katalogu domowym, byłyby własnością root i nie byłyby dla ciebie dostępne jako zwykły użytkownik. Dlatego w tym przypadku nie buforuje plików. Nie jest straszne pominięcie tego, -Hco pipje wykrywa i ostrzega.
Bajt Dowódca

1
Dlaczego oba polecenia po prostu nadpisują pippolecenie? Kiedy aktualizuję pip2, nie uaktualnia pip2polecenia, tylko pip.
Yep_It's_Me

@ Yep_It's_Me Dzieje się tak, ponieważ pipzależy od tego, którą wersję Pythona wywołujesz. i dlatego jego polecenia są pip2i pip3odpowiednio wywołać odpowiednią wersję Pythona zaktualizować pip. Czy to ma sens?
JayRizzo

27

Myślę że

pip install --upgrade pip

polecenie już nie działa poprawnie. Prawidłowe polecenie powinno brzmieć:

  • dla Python 3:

    python3 -m pip install --upgrade pip
  • dla Python 2:

    python2 -m pip install --upgrade pip

Gg @ David-foerster
JayRizzo

W systemie Linux wystarczy użyć pip install -U pip(patrz Aktualizacja pipa )
Eido95

1
Miałem problemy podczas aktualizacji pipa z katalogu głównego (na obrazku Docker) i działało to jak urok.
Cristian Ramon-Cortes

Działa jak urok w mennicy Linuksa
HelloWorld,

5

Przejdź do tej strony https://pypi.python.org/pypi/pip

skopiuj (lub) pobierz link źródłowy (kończy się na .tar.gz)

dla wersji 9.0.1 link to https://pypi.python.org/pypi?:action=show_md5&digest=35f01da33009719497f01a4ba69d63c9

procedura instalacji

wget //link goes here
tar -xzvf pip-9.0.1.tar.gz
cd pip-9.0.1
sudo python3 setup.py install

wersję należy zmienić na najnowszą, a łącze można zaktualizować za pomocą łącza najnowszej wersji

to powinno działać


to jedyna rzecz, która zadziałała dla mnie, ponieważ wszystko inne wymaga połączenia z serwerem z powłoki, która znowu nie działa z tym samym błędem.
Alok Rajasukumaran


1

Myślę, że warto wspomnieć, że poniżej wyjaśniam, jeśli oczekujesz, że pip wskaże Python 2, a pip3 wskaże Python 3. Powodem, o którym wspominam, jest to, że podczas aktualizacji pip3 przejmuje on również polecenie pip jako dobrze. Jest to dość dziwna konwencja, ponieważ domyślnie python wskazuje na 2.x, a python3 wskazuje na 3.x. Biorąc to pod uwagę ...

Jeśli chcesz mieć najnowsze wersje Python 2.x pip i Python 3.x pip3 współistnieją na tym samym komputerze (używając pip dla 2.x i pip3 dla 3.x), musisz wykonać następujące czynności:

sudo apt-get install python-pip python3-pip --yes
sudo python3 -m pip install pip --upgrade --force
sudo python -m pip install pip --upgrade --force # this line associates pip with Python 2

Inne odpowiedzi udzielone przez innych nie wspominają, że po uruchomieniu sudo pip3 install pip - upgrade , skończysz na poleceniu pip instalującym pakiety w katalogach python 3.x zamiast katalogów python 2.x.

Część mnie uważa, że ​​powinniśmy po prostu zostawić pip po aktualizacji pip3 (nawet jeśli to pip -> pip3), ale istnieje niebezpieczeństwo, że ludzie już oczekują, że pip będzie działał jak python - oba wskazują na python 2.x. Innymi słowy, ludzie są prawdopodobnie przeszkoleni do korzystania z pip / python dla Pythona 2.x tak samo, jak zostali przeszkoleni do korzystania z pip3 / python3 dla python 3.x.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.