Jak zaktualizować pakiet Python?


234

Używam Ubuntu 9:10 i zainstalowany jest pakiet o nazwie M2Crypto (wersja to 0.19.1). Muszę pobrać, zbudować i zainstalować najnowszą wersję pakietu M2Crypto (0.20.2).

Pakiet 0.19.1 zawiera pliki w wielu lokalizacjach, w tym (/ usr / share / pyshared i /usr/lib/pymodules.python2.6).

Jak mogę całkowicie odinstalować wersję 0.19.1 z mojego systemu przed zainstalowaniem wersji 0.20.2?

Odpowiedzi:


54

Możesz zajrzeć do menedżera pakietów Pythona, takiego jak pip . Jeśli nie chcesz używać menedżera pakietów Python, powinieneś być w stanie pobrać M2Crypto i zbudować / skompilować / zainstalować na starej instalacji.


1
Dzięki. To, co powiedziałeś, zadziałało. Zbudowałem i zainstalowałem 0.20.2 bez konieczności odinstalowywania 0.19.1.
Thompson,

461

Najlepszym sposobem, jaki znalazłem, jest uruchomienie tego polecenia z terminala

sudo pip install [package_name] --upgrade

sudo poprosi o podanie hasła roota, aby potwierdzić działanie.


Uwaga: Niektórzy użytkownicy mogą zamiast tego zainstalować pip3. W takim przypadku użyj

sudo pip3 install [package_name] --upgrade

4
A jeśli używasz proxy bez uwierzytelnienia: sudo pip install [pakiet] --upgrade --proxy = adres: port
lmsasu

32
Przyszedłem tutaj po tę odpowiedź. Próbowałem pip updatei pip upgradebyłem zdesperowany, dopóki --upgradetu nie zobaczyłem . Dlaczego nie dodają pip upgradepolecenia?
Lars Blumberg

9
To rzeczywiście dobrze ukryta funkcja.
otocan

1
Dla użytkowników systemu Windows: sudonie jest wymagane.
Stevoisiak,

2
To powinna być odpowiedź nr 1
Cord Kaldemeyer

48

Aby automatycznie zaktualizować wszystkie nieaktualne pakiety (które zostały zainstalowane przy użyciu pip), po prostu uruchom skrypt poniżej,

pip install $(pip list --outdated | awk '{ print $1 }') --upgrade

Tutaj pip list --outdatedwyświetli listę wszystkich przestarzałych pakietów, a następnie potokujemy go do awk, aby wypisał tylko nazwy. Następnie $(...)zmieni zmienną, a następnie wszystko zostanie zrobione automatycznie. Upewnij się, że masz uprawnienia. (Po prostu wstaw sudoprzed pip, jeśli jesteś zdezorientowany) Napiszę skrypt o nazwie, pip-upgrade kod jest poniżej,

#!/bin/bash
sudo pip install $(pip list --outdated | awk '{ print $1 }') --upgrade

Następnie użyj następujących wierszy skryptu, aby go przygotować:

sudo chmod +x pip-upgrade
sudo cp pip-upgrade /usr/bin/

Więc po prostu uderz pip-upgradei voila!


dostałem błąd składniowy wskazujący na ostatni nawias w:awk: cmd. line:1: { print $1 })
TT--

7
@TT Nowsze wersje pipwymagają użycia --format=legacyopcji, tj pip list --outdated --format=legacy. Również FYI dla wszystkich: ślepa aktualizacja wszystkich modułów przez pip może być dość niebezpieczna na wielu dystrybucjach Linuksa. Wiele z nich udostępnia określone moduły Pythona za pośrednictwem pakietów dystrybucyjnych, a niektóre z tych dystrybucji (w szczególności RHEL) mogą mocno się zepsuć, jeśli aktualizujesz gówno ... nie wspominając o tym, że jeśli aktualizujesz za pośrednictwem pip, pakiety dystrybucyjne mogą przywrócić twoje zmiany przyszła aktualizacja.
rsaw

dzięki @rsaw. Ma rację, powinieneś uruchomić polecenia pip z opcją --user
Fahim Ferdous

1
Podoba mi się ta odpowiedź, choć rozumiem niebezpieczeństwo związane z automatyczną aktualizacją wszystkiego. W każdym razie, ponieważ starsze wersje są przestarzałe w pip 19.0 pip install $ (lista pip --outdated --format = kolumny | grep -v "Pakiet" | grep -v - ---- | awk '{print $ 1}') - -upgrade
mike przeciwko

2
Aby pracować na Ubuntu 18.04 venv, dostosuj w następujący sposób:pip install $(pip list --outdated | tail +3 | grep -v sdist | awk '{ print $1 }') --upgrade
Alexander Remesch

34
  1. Za pomocą wiersza polecenia systemu Windows uruchom: pip list --outdated Otrzymasz listę nieaktualnych pakietów.
  2. Uruchom: pip install [package] --upgrade zaktualizuje [package]i odinstaluje poprzednią wersję.

Aby zaktualizować pip:

py -m pip install --upgrade pip

Ponownie spowoduje to odinstalowanie poprzedniej wersji pip i zainstalowanie najnowszej wersji pip.


29
  • Metoda 1: Uaktualnij ręcznie jeden po drugim

pip install package_name -U
  • Metoda 2: Uaktualnij wszystko naraz (wycofanie dużej szansy, jeśli aktualizacja niektórych pakietów nie powiedzie się

pip install $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1) --upgrade
  • Metoda 3: Uaktualnij jeden po drugim za pomocą pętli

for i in  $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1); do pip install $i --upgrade; done


9

Użyj pipupgrade !

$ pip install pipupgrade
$ pipupgrade --latest --interactive

pipupgrade pomaga uaktualnić system, lokalny lub pakiety z requirements.txtpliku! Selektywnie aktualizuje również pakiety, które nie psują zmian. Kompatybilny z Python2.7 +, Python3.4 + i pip9 +, pip10 +, pip18 +.

wprowadź opis zdjęcia tutaj

UWAGA: Jestem autorem narzędzia.


1
Ilekroć korzystam z tego narzędzia, pojawia się odpowiedź „[0; 93m Sprawdzanie ... [0m”] i nic nie robi. Czy używam go nieprawidłowo?
Violatic

Używam komputera Mac z portami MacPorts. W przypadku Python 3.7 pipupgrade działał tylko dla 5 z 50 pakietów, dla reszty musiałem użyć tego: dla i in pip3.7 list --outdated | sed -n -e '3,$s/ .*//p'; wykonaj instalację pip3.7 - uaktualnij $ i; gotowe
Michael Dreher,

4

Jak oryginalnie zainstalowano pakiet? Gdyby to było przez apt, możesz to zrobićapt-get remove python-m2crypto

Jeśli zainstalowałeś go za pomocą easy_install, jestem pewien, że jedynym sposobem jest po prostu skasowanie plików w lib, współdzielonych itp.

Moja rekomendacja w przyszłości? Użyj czegoś takiego jak pip, aby zainstalować swoje pakiety. Co więcej, możesz spojrzeć na coś, co nazywa się virtualenv, więc twoje pakiety są przechowywane na podstawie środowiska, a nie tylko na rootie.

Z pipem jest to dość łatwe:

pip install m2crypto

Ale możesz również zainstalować z repozytoriów git, svn itp. Z właściwym adresem. Wszystko to wyjaśniono w dokumentacji pip


Sposób, w jaki opisuje, gdzie są instalowane pliki, wskazuje, że pakiet został zainstalowany przy użyciu menedżera pakietów apt - ponieważ (na Debian AFAIK) apt zainstalowałby pakiety Pythona w dwóch wymienionych przez niego lokalizacjach - / share / pyshared / .. jest dla kodu współdzielonego pomiędzy wersjami i / usr / lib / .. dla części specyficznych dla wersji. z drugiej strony easy-install / pip użyłby / usr / local / lib / .. - tak jak powiedziałeś - wystarczyłoby usunąć apt-get remove.
Bazylea Shishani,


3

W notatniku Juptyer jest to bardzo prosty sposób

!pip install <package_name> --upgrade

Musisz tylko zastąpić rzeczywistą nazwą pakietu.


2

Pobierz wszystkie nieaktualne pakiety i utwórz plik wsadowy za pomocą następujących poleceń pip install xxx --upgrade dla każdego nieaktualnego pakietu

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.