Wie aktualisiere ich ein Python-Paket?

234

Ich verwende Ubuntu 9:10 und ein Paket namens M2Crypto ist installiert (Version 0.19.1). Ich muss die neueste Version des M2Crypto-Pakets (0.20.2) herunterladen, erstellen und installieren.

Das 0.19.1-Paket enthält Dateien an verschiedenen Speicherorten, darunter (/ usr / share / pyshared und /usr/lib/pymodules.python2.6).

Wie kann ich Version 0.19.1 vor der Installation von 0.20.2 vollständig von meinem System deinstallieren?

Thompson
quelle

Antworten:

54

Vielleicht möchten Sie sich einen Python-Paketmanager wie pip ansehen . Wenn Sie keinen Python-Paketmanager verwenden möchten, sollten Sie M2Crypto herunterladen und über die alte Installation erstellen / kompilieren / installieren können.

Jeremy Whitlock
quelle
1
Vielen Dank. Was du gesagt hast, hat funktioniert. Ich habe 0.20.2 erstellt und installiert, ohne 0.19.1 deinstallieren zu müssen.
Thompson
461

Der beste Weg, den ich gefunden habe, besteht darin, diesen Befehl vom Terminal aus auszuführen

sudo pip install [package_name] --upgrade

sudo Sie werden aufgefordert, Ihr Root-Passwort einzugeben, um die Aktion zu bestätigen.


Hinweis: Bei einigen Benutzern ist möglicherweise stattdessen pip3 installiert. In diesem Fall verwenden

sudo pip3 install [package_name] --upgrade
Fürstlich
quelle
4
Und wenn Sie einen Proxy ohne Authentifizierung verwenden: sudo pip install [package] --upgrade --proxy = address: port
lmsasu
31
Ich bin wegen dieser Antwort hierher gekommen. Ich versuchte es pip updateund pip upgradewar verzweifelt, bis ich --upgradehier sah . Warum fügen sie keinen pip upgradeBefehl hinzu?
Lars Blumberg
9
Dies ist in der Tat eine gut versteckte Funktion.
Otocan
1
Für Windows-Benutzer: sudoist nicht erforderlich.
Stevoisiak
2
Dies sollte Antwort # 1
Cord Kaldemeyer
48

Um alle veralteten Pakete (die mit pip installiert wurden) automatisch zu aktualisieren, führen Sie einfach das folgende Skript aus:

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

Hier pip list --outdatedwerden alle veralteten Pakete aufgelistet und dann an awk weitergeleitet, sodass nur die Namen gedruckt werden. Dann $(...)wird es zu einer Variablen und dann wird alles automatisch erledigt. Stellen Sie sicher, dass Sie über die Berechtigungen verfügen. (Setzen Sie einfach sudovor Pip , wenn Sie verwirrt sind) Ich habe ein Skript mit dem Namen schreiben würde, pip-upgrade ist der Code unten,

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

Verwenden Sie dann die folgenden Skriptzeilen, um es vorzubereiten:

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

Dann einfach schlagen pip-upgradeund voila!

Fahim Ferdous
quelle
Ich habe einen Syntaxfehler, der auf die letzte Klammer in:awk: cmd. line:1: { print $1 })
TT--
7
@TT Bei neueren Versionen von pipmüssen Sie die --format=legacyOption verwenden, d pip list --outdated --format=legacy. H. Auch zu Ihrer Information: Das blinde Aktualisieren aller Module über Pip kann in vielen Linux-Distributionen sehr gefährlich sein. Viele von ihnen bieten bestimmte Python-Module über Distribution-Pakete an, und einige dieser Distributionen (insbesondere RHEL) können beim Aktualisieren von Shit schwer brechen ... ganz zu schweigen von der Tatsache, dass die Distribution-Pakete bei einem Update über Pip Ihre Änderungen möglicherweise rückgängig machen ein zukünftiges Update.
rsaw
danke @rsaw. Er hat Recht, Sie sollten Ihre Pip-Befehle mit der Option --user
Fahim Ferdous am
1
Ich mag diese Antwort, obwohl ich die Gefahr verstehe, alles automatisch zu aktualisieren. Wie auch immer, da Legacy in Pip 19.0 veraltet ist, installiere pip $ (Pip-Liste --outdated --format = Spalten | grep -v "Paket" | grep -v - ---- | awk '{print $ 1}') - -upgrade
mike v
2
Um an einem Ubuntu 18.04 venv zu arbeiten, passen Sie sich wie folgt an:pip install $(pip list --outdated | tail +3 | grep -v sdist | awk '{ print $1 }') --upgrade
Alexander Remesch
34
  1. Führen pip list --outdated Sie über die Windows-Eingabeaufforderung Folgendes aus: Sie erhalten die Liste der veralteten Pakete.
  2. Lauf: pip install [package] --upgrade Es wird [package]die vorherige Version aktualisiert und deinstalliert.

So aktualisieren Sie pip:

py -m pip install --upgrade pip

Auch hier wird die vorherige Version von pip deinstalliert und die neueste Version von pip installiert.

Hossain Mahmood Tuhin
quelle
29
  • Methode 1: Manuelles Upgrade einzeln

pip install package_name -U
  • Methode 2: Alle auf einmal aktualisieren (Rollback mit hoher Wahrscheinlichkeit, wenn ein Paket nicht aktualisiert werden kann)

pip install $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1) --upgrade
  • Methode 3: Aktualisieren Sie nacheinander mit der Schleife

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

Ich denke, der beste Einzeiler ist:

pip install --upgrade <package>==<version>
Stuart Mclean
quelle
9

Verwenden pipupgrade !

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

Mit pipupgrade können Sie Ihr System, Ihr lokales System oder Ihre Pakete von einer requirements.txtDatei aus aktualisieren ! Außerdem werden Pakete selektiv aktualisiert, bei denen Änderungen nicht unterbrochen werden. Kompatibel mit Python2.7 +, Python3.4 + und pip9 +, pip10 +, pip18 +.

Geben Sie hier die Bildbeschreibung ein

HINWEIS: Ich bin der Autor des Tools.

Achilles Gasper Rasquinha
quelle
1
Immer wenn ich dieses Tool benutze, erhalte ich die Antwort "[0; 93mChecking ... [0m" und es wird nichts unternommen. Benutze ich es falsch?
Violatic
Ich benutze einen Mac mit MacPorts. Mit Python 3.7 funktionierte Pipupgrade nur für 5 von 50 Paketen, für den Rest musste ich folgendes verwenden: für i in pip3.7 list --outdated | sed -n -e '3,$s/ .*//p'; mache pip3.7 install --upgrade $ i; fertig
Michael Dreher
4

Wie wurde das Paket ursprünglich installiert? Wenn es über apt wäre, könnten Sie es einfach tunapt-get remove python-m2crypto

Wenn Sie es über easy_install installiert haben, bin ich mir ziemlich sicher, dass der einzige Weg darin besteht, die Dateien einfach unter lib, shared usw. in den Papierkorb zu werfen.

Meine Empfehlung für die Zukunft? Verwenden Sie so etwas wie pip , um Ihre Pakete zu installieren. Darüber hinaus können Sie in etwas namens virtualenv nachschlagen sodass Ihre Pakete auf Umgebungsbasis und nicht nur auf Root-Basis gespeichert werden.

Mit pip ist es ziemlich einfach:

pip install m2crypto

Sie können aber auch git-, svn- usw. Repos mit der richtigen Adresse installieren. Dies alles wird in der Pip-Dokumentation erklärt

Bartek
quelle
Die Art und Weise, wie er beschreibt, wo die Dateien installiert sind, zeigt an, dass das Paket mit dem apt-Paketmanager installiert wurde - da (unter Debian AFAIK) apt Python-Pakete unter den beiden von ihm aufgelisteten Speicherorten installieren würde - / share / pyshared / .. ist für gemeinsam genutzten Code über Versionen und / usr / lib / .. für versionenspezifische Teile. easy-install / pip hingegen würde / usr / local / lib / .. verwenden - wie Sie sagten - nur apt-get remove hätte ihn erledigt.
Basel Shishani
3

In Juptyer Notebook ist ein sehr einfacher Weg

!pip install <package_name> --upgrade

Sie müssen also nur durch den tatsächlichen Paketnamen ersetzen.

Joe Zeng
quelle
2

Holen Sie sich alle veralteten Pakete und erstellen Sie eine Batch-Datei mit den folgenden Befehlen pip install xxx --upgrade für jedes veraltete Paket

Leslie Lespes
quelle