Jak mogę zaktualizować samą pip z poziomu mojego wirtualnego środowiska?


523

Jestem w stanie zaktualizować pakiety zarządzane przez pip, ale jak mogę zaktualizować sam pip? Zgodnie z pip --version, mam obecnie zainstalowany pip 1.1 na moim virtualenv i chcę zaktualizować do najnowszej wersji.

Jakie jest na to polecenie? Czy muszę używać dystrybucji, czy jest dostępna natywna komenda pip lub virtualenv? Próbowałem już pip updatei pip update pipbez powodzenia.


40
pip install --upgrade pip? To tylko kolejny pakiet PyPI.
Cairnarvon,

1
Ta komenda daje mi: „/ Users / zak / MyProject / venv / bin / pip install: error: brak takiej opcji: --update”
zakdances

4
To --upgrade, nie --update, przepraszam. Natychmiast zredagowałem swój post, ale musiałeś go zobaczyć dokładnie w niewłaściwym czasie.
Cairnarvon,

2
@Cairnarvon czy to polecenie jest inne pip3? Próbuję pip3, ale po prostu mówi mi, że nie może go znaleźć, a następnie narzeka PONOWNIE, że nie jest aktualny ... kiedy nawet nie pozwala mi go zaktualizować / zaktualizować!
Charlie Parker,

Odpowiedzi:


929

pipto po prostu pakiet PyPI jak każdy inny; możesz go użyć do aktualizacji samego w taki sam sposób, jak każdego pakietu:

pip install --upgrade pip

W systemie Windows zalecane polecenie to:

python -m pip install --upgrade pip

53
W systemie Windows miałem problem z uprawnieniami, próbując zaktualizować pip za pomocą pip. Zamiast tego użyłem easy_install do aktualizacji:easy_install pip
bsa

8
Kiedy to zrobiłem, pip wydawał się aktualizować (1.1 -> 1.4), ale kiedy robię „pip --version”, nadal pokazuje starą wersję 1.1. Próbowałem dezaktywować i ponownie aktywować virtualenv, ale nadal wyświetla starą wersję.
Zitrax,

40
W systemie Windows prawdopodobnie lepiej jest użyć takiego polecenia: python -m pip install --upgrade pipaby uniknąć uruchamiania pip.exe z katalogu skryptów.
bialix

@ Zitrax rozwiązałeś ten problem? Mam do czynienia z tym samym problemem.
Mohammad Ali Baghershemirani,

@Mohammadalibaghershemirani przepraszam, to już dawno - nie pamiętam.
Zitrax,

58

Bardziej bezpieczną metodą jest uruchomienie pip przez moduł python :

python -m pip install -U pip

W systemie Windows wydaje się, że występuje problem z plikami binarnymi, które próbują się zastąpić, ta metoda działa wokół tego ograniczenia.


9
To właśnie teraz zaleca sam pip, jeśli wykryje nowszą wersję siebie.
tefyr

1
Uważam, że jest to bezpieczniejsze, ponieważ w niektórych systemach operacyjnych (Windows) po prostu bezpośrednie uruchomienie pip może stworzyć blokadę pliku w pliku wykonywalnym, co uniemożliwiłoby jego aktualizację. Dzwoniąc do Pythona i każąc mu bezpośrednio załadować moduł, unikasz dostępu do pliku wykonywalnego.
jpmc26 15.07.16

Musisz uruchomić wiersz polecenia w trybie administratora, aby to zadziałało. Wypróbowałem kilka innych sugestii i nic nie działało, dopóki nie uruchomiłem ponownie okna wiersza polecenia w trybie administratora, a następnie to polecenie działało idealnie.
DaveN59,

42

W moim przypadku moja wersja pipa była zepsuta, więc sama aktualizacja nie działała.

Naprawić:

(inside virtualenv):easy_install -U pip

1
To też była moja sprawa. Wypróbowałem wszystkie inne metody, ale tylko ta pomaga mi. Dzięki !
levif

To samo tutaj, to jedyny sposób, który działa dla mnie w Debianie. Użycie Pythona lub pipa do uaktualnienia pipa z poziomu virtualenv zakończy się niepowodzeniem, ponieważ odmówił on odinstalowania istniejącego pipa siedzącego poza venv.
user3748764

Uruchomienie tego pokazało mi wiele rzeczy, w tym Download error on https://pypi.python.org/simple/pip/: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) -- Some packages may not be found!które nie były wyświetlane podczas uruchamiania - upgrade. Jest to prawdopodobnie powód niepowodzenia instalacji pakietu pip oraz niepowodzenia aktualizacji pip przez pip, SSL wydaje się być zepsuty.
Vadorequest

9

Wypróbowałem wszystkie te rozwiązania wymienione powyżej w Debian Jessie. Nie działają, ponieważ wystarczy najnowsza wersja kompilowana przez menedżera pakietów debian, czyli 1.5.6, co odpowiada wersji 6.0.x. Niektóre pakiety, które używają pip jako wymagań wstępnych, nie będą działać jako wyniki, takie jak spaCy (który potrzebuje opcji - no-cache-dir do poprawnego działania).

Tak więc najlepszym sposobem rozwiązania tych problemów jest uruchomienie pliku get-pip.py pobranego za pomocą wget, ze strony internetowej lub curl w następujący sposób:

 wget https://bootstrap.pypa.io/get-pip.py -O ./get-pip.py
 python ./get-pip.py
 python3 ./get-pip.py

Spowoduje to zainstalowanie bieżącej wersji, która w momencie pisania tego rozwiązania ma wersję 9.0.1, co znacznie wykracza poza to, co zapewnia Debian.

 $ pip --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python2.7/dist-packages (python 2.7)
 $ pip3 --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python3.4/site-packages (python 3.4)

2
przydatne, gdy się pip install --upgrade pipnie powiedzie
Aneuway,

Gdybym mógł kilka razy poprzeć tę odpowiedź, zrobiłbym to. To właśnie rozwiązało problem polegający na tym, że pip 9.x nie powiódł się błąd SSL poprzez aktualizację do pip 10.x. Zobacz stackoverflow.com/questions/25981703/…
Keith John Hutchison

Cóż, jeśli przegłosowałeś to choć raz, będę szczęśliwy. Moje odpowiedzi zwykle można znaleźć po godzinie lub dwóch polowaniach i latach doświadczeń. Nie możesz powiedzieć tego samego o moich pytaniach? Ludzie mogą być naprawdę wredni! :)
Eamonn Kenny

4

Aktualizacja pipa za pomocą polecenia „ install pip - upgrade pip ” nie zawsze działa z powodu przerażającego problemu z certyfikatem: Wystąpił problem z potwierdzeniem certyfikatu ssl: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] Wersja protokołu alertu tlsv1

Lubię korzystać z jednego wiersza polecenia dla wirtualnych envs:

curl https://bootstrap.pypa.io/get-pip.py | python -

Lub jeśli chcesz zainstalować go szeroko, będziesz potrzebować

curl https://bootstrap.pypa.io/get-pip.py | sudo python -

możesz nadać curl -s flagę, jeśli chcesz wyciszyć dane wyjściowe podczas działania w skrypcie automatyzacji.


1

W moim przypadku działało to z linii poleceń terminalu w Debian Stable

python3 -m pip install --upgrade pip

1

Aby to dla mnie zadziałało, musiałem przejść do szczegółowego katalogu w Pythonie, używając wiersza polecenia Python (na WIN10 z VS CODE). W moim przypadku było to w moim katalogu „AppData \ Local \ Programs \ Python \ python35-32”. Stamtąd uruchomiłem polecenie ...

python -m pip install --upgrade pip

To zadziałało i jestem gotowy.


1

Otwórz wiersz polecenia z uprawnieniami administratora i powtórz polecenie:

python -m pip install --upgrade pip

4
Czy to nie to samo, co niektóre z istniejących odpowiedzi?
hkchengrex

Jest tak, ale miałem problem i problem został rozwiązany, gdy uruchomiłem CMD z uprawnieniami administratora.
MRamzan

1

Wystąpił problem z wersją pip 10. Przejawi się jako błąd:

ubuntu@mymachine-:~/mydir$ sudo pip install --upgrade pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

Rozwiązaniem jest być w miejscu, które chcesz zaktualizować, a następnie uruchomić:

sudo myvenv/bin/pip install --upgrade pip

zamiast po prostu

sudo pip install --upgrade pip

1

W przypadku korzystania z venv jakakolwiek aktualizacja do instalacji pip spowoduje uaktualnienie systemowego pipa zamiast venv pip. Musisz także zaktualizować pakiety ładujące pip.

  python3 -m pip install --upgrade pip setuptools wheel

wystąpił problem z listonoszem lub pepa w Pythonie. Niestety wszystkie strony odrzuciły odpowiedzialność jako not my motorollerproblem
dre-hh

0

Zainstalowałem Python w C: \ Python \ Python36, więc poszedłem do wiersza poleceń systemu Windows i wpisałem „cd C: \ Python \ Python36, aby przejść do właściwego katalogu. Następnie wszedłem do„ python -m install --upgrade pip ”wszystko dobrze!


0

Na moim laptopie z Windows 7 właściwym sposobem instalacji najnowszej wersji pip jest:

python.exe -m pip install --upgrade pip

0

Jednowierszowy program w języku Python
Najlepszym sposobem, jaki znalazłem, jest napisanie jednoliniowego programu, który pobiera i uruchamia oficjalny skrypt get-pip. Zobacz kod poniżej.

Oficjalne dokumenty zalecają użycie curl do pobrania skryptu get-pip, ale ponieważ pracuję w systemie Windows i nie mam zainstalowanego curl, wolę używać samego Pythona do pobierania i uruchamiania skryptu.

Oto program jednowierszowy, który można uruchomić za pomocą wiersza polecenia za pomocą języka Python 3:

python -c "import urllib.request; exec(urllib.request.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

Ta linia pobiera oficjalny skrypt „get-pip.py” zgodnie z uwagami dotyczącymi instalacji i wykonuje skrypt za pomocą polecenia „exec”.

W przypadku Python2 zastąpiłbyś „urllib.request” na „urllib2”:

python -c "import urllib2; exec(urllib2.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

Środki ostrożności
Warto zauważyć, że ślepe uruchamianie dowolnego skryptu Pythona jest z natury niebezpieczne. Z tego powodu oficjalne instrukcje zalecają pobranie skryptu i sprawdzenie go przed uruchomieniem.

To powiedziawszy, wiele osób nie sprawdza kodu i po prostu go uruchamia. Ten jednowierszowy program to ułatwia.


0

Miałem podobny problem na malinowym pi.

Problem polegał na tym, że protokół HTTP wymaga protokołu SSL, dlatego musiałem zmusić go do korzystania z protokołu https, aby obejść ten wymóg.

sudo pip install --upgrade pip --index-url=https://pypi.python.org/simple

lub

sudo pip-3.2 --upgrade pip --index-url=https://pypi.python.org/simple/

0

Byłem w podobnej sytuacji i chciałem zaktualizować pakiet urllib3. Dla mnie zadziałało:

pip3 install --upgrade --force-reinstall --ignore-installed urllib3==1.25.3

-2

Bardzo prosta. Wystarczy pobrać pip z https://bootstrap.pypa.io/get-pip.py . Zapisz plik w pliku forlder lub dekstop. Zapisałem plik na dysku D. Następnie w wierszu polecenia przejdź do folderu, w którym pobrałeś pip. Następnie wpisz tam

python -get-pip.py

Zrzut ekranu instalacji PIP

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.