Jak zaktualizować / zaktualizować pakiet za pomocą pip?

171

Jaki jest sposób aktualizacji pakietu za pomocą pip? te nie działają:

pip update
pip upgrade

Wiem, że to proste pytanie, ale jest potrzebne, ponieważ nie jest tak łatwe do znalezienia ( dokumentacja pip nie pojawia się, a inne pytania z przepełnienia stosu są istotne, ale nie do końca o tym)

borgr
źródło

Odpowiedzi:

280

Tak jest

sudo pip install [package_name] --upgrade

lub w skrócie

sudo pip install [package_name] -U

sudo poprosi o wprowadzenie hasła roota, aby potwierdzić akcję.

Jeśli nie masz hasła roota (jeśli nie jesteś administratorem), prawdopodobnie powinieneś pracować z virtualenv, a następnie porzucić sudo:

pip install [package_name] --upgrade
borgr
źródło
2
Jak pip install --helppowiedział -U, --upgrade Upgrade all specified packages to the newest available version.. Więc powinno to być wielkie litery -U, nie -u.
Peter Liang
25
Dlaczego tak powszechna opcja nie jest wyświetlana, kiedy to robisz, pip --helpjest dla mnie zagadką ...
Husky
3
@Husky - Tak, z tego samego powodu, dlaczego nie robią upgradepolecenia, które robi to, co widzisz w odpowiedzi, to dobre pytanie. (To znaczy, jeśli używasz „upgrade”, robi to po prostu to, co robi install+ --upgrade.) Rodzaj „aliasu”.
bshea
10

W przypadku niespecyficznego pakietu i bardziej ogólnego rozwiązania możesz sprawdzić pip-review , narzędzie, które sprawdza, które pakiety mogą / powinny zostać zaktualizowane.

$ pip-review --interactive
requests==0.14.0 is available (you have 0.13.2)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit y
jak gdyby
źródło
3
Chociaż nie odpowiada to bezpośrednio na pytanie, może to być właśnie to, czego niektórzy ludzie szukają, gdy szukają tej wiadomości.
borgr
8

tl; dr skrypt do aktualizacji wszystkich zainstalowanych pakietów

Jeśli chcesz zaktualizować tylko jeden pakiet, zapoznaj się z odpowiedzią @ borgr . Często uważam za konieczne lub przynajmniej przyjemne uaktualnienie wszystkich moich pakietów naraz. Obecnie pip nie obsługuje natywnie tej akcji, ale dzięki skryptom sh jest to dość proste. Używasz pip list, awk(lub cuti tail) oraz podstawiania poleceń. Moja normalna jedna linijka to:

for i in $(pip list -o | awk 'NR > 2 {print $1}'); do sudo pip install -U $i; done

Spowoduje to wyświetlenie hasła roota. Jeśli nie masz do tego dostępu, warto przyjrzeć się --useropcji piplub virtualenv .

Aiden Woodruff
źródło
7
import subprocess as sbp
import pip
pkgs = eval(str(sbp.run("pip3 list -o --format=json", shell=True,
                         stdout=sbp.PIPE).stdout, encoding='utf-8'))
for pkg in pkgs:
    sbp.run("pip3 install --upgrade " + pkg['name'], shell=True)

Zapisz jako xx.py
Następnie uruchom Python3 xx.py
Środowisko: python3.5 + pip10.0 +

Fofdsf
źródło
Podoba mi się to rozwiązanie. Dodałem wydruk pokazujący nazwę pakietu podczas aktualizacji:print('updating ', pkg['name'])
pvoj
4

Aby zaktualizować pip dla Python3.4 +, musisz użyć pip3 w następujący sposób:

sudo pip3 install pip --upgrade

To zaktualizuje pip znajdujący się pod adresem: /usr/local/lib/python3.X/dist-packages

W przeciwnym razie, aby zaktualizować pip do Python2.7, użyłbyś pip w następujący sposób:

sudo pip install pip --upgrade

To zaktualizuje pip znajdujący się pod adresem: /usr/local/lib/python2.7/dist-packages

Nick D.
źródło
7
Nie o to pytał PO. Pyta, jak zaktualizować konkretny pakiet, a nie sam PIP.
limitowany
niemniej jednak wydaje się pomocne, aby znaleźć tutaj jedną z tych innych odpowiedzi
uhoh