webentwicklung-frage-antwort-db.com.de

Installieren bestimmter Paketversionen mit pip

Ich versuche, Version 1.2.2 des MySQL_python-Adapters zu installieren, wobei eine neue Virtualenv verwendet wird, die mit der Option --no-site-packages erstellt wurde. Die aktuelle Version in PyPi ist 1.2.3 . Gibt es eine Möglichkeit, die ältere Version zu installieren? Ich habe einen Artikel gefunden, der besagt, dass dies dies tun soll:

pip install MySQL_python==1.2.2

Wenn es installiert ist, zeigt es dennoch MySQL_python-1.2.3-py2.6.Egg-info in den Site-Paketen. Ist dies ein spezifisches Problem für dieses Paket oder mache ich etwas falsch?

980
Joe

Erstens sehe ich zwei Probleme mit dem, was Sie zu tun versuchen. Da Sie bereits über eine installierte Version verfügen, sollten Sie entweder den aktuell vorhandenen Treiber deinstallieren oder pip install -I MySQL_python==1.2.2 verwenden.

Sie werden jedoch bald feststellen, dass dies nicht funktioniert. Wenn Sie sich das Installationsprotokoll von pip ansehen oder einen pip install -Iv MySQL_python==1.2.2 ausführen, werden Sie feststellen, dass die PyPI-URL-Verknüpfung für MySQL_python v1.2.2 nicht funktioniert. Sie können dies hier überprüfen: http://pypi.python.org/pypi/MySQL-python/1.2.2

Die Download-Link-404s und die Links für die Rückfall-URL werden aufgrund des letzten Upgrades von sourceforge.net und der veralteten URL von PyPI unendlich oft umgeleitet.

Um den Treiber ordnungsgemäß zu installieren, können Sie die folgenden Schritte ausführen:

pip uninstall MySQL_python
pip install -Iv http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/MySQL-python-1.2.2.tar.gz/download
700

Sie können sogar einen Versionsbereich mit dem Befehl pip install verwenden. Etwas wie das:

pip install 'stevedore>=1.3.0,<1.4.0'

Wenn das Paket bereits installiert ist und Sie ein Downgrade durchführen möchten, fügen Sie --force-reinstall wie folgt hinzu:

pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall
354
user1978556

Eine Möglichkeit, wie in diesem Beitrag vorgeschlagen, ist, die Version in pip als zu erwähnen 

pip install -Iv MySQL_python==1.2.2

verwenden Sie == und geben Sie die Versionsnummer an, um nur diese Version zu installieren. -I, --ignore-installed ignoriert bereits installierte Pakete.

106

Um eine bestimmte Python-Paketversion zu installieren, sei es das erste Mal, ein Upgrade oder ein Downgrade, verwenden Sie 

pip install --force-reinstall MySQL_python==1.2.4

MySQL_python Version 1.2.2 ist nicht verfügbar, daher habe ich eine andere Version verwendet. Um alle verfügbaren Paketversionen eines Index anzuzeigen, schließen Sie die Version aus: 

pip install MySQL_python==
43
Zach Weg

Ich glaube, wenn Sie bereits ein Paket installiert haben, wird es von pip nicht mit einer anderen Version überschrieben. Verwenden Sie -I, um vorherige Versionen zu ignorieren.

35
dappawit

Da dies eine bahnbrechende Änderung zu sein schien, die in Version 10 von pip eingeführt wurde, habe ich auf eine kompatible Version heruntergestuft:

pip install 'pip<10' 

Mit diesem Befehl wird pip aufgefordert, eine Version des Moduls zu installieren, die älter ist als Version 10. Führen Sie dies in einem virutalenv aus, damit Sie Ihre Site-Installation von Python nicht vermasseln.

3
Trenton

Manchmal wird die zuvor installierte Version zwischengespeichert. 

~$ pip install pillow==5.2.0

Es gibt das Folgende zurück:
Anforderung bereits erfüllt: Kissen == 5.2.0 in /home/ubuntu/anaconda3/lib/python3.6/site-packages (5.2.0)

Wir können --no-cache-dir zusammen mit -I verwenden, um dies zu überschreiben

~$ pip install --no-cache-dir -I pillow==5.2.0
2
Jack Chan

Es gibt zwei Möglichkeiten, Pakete mit der Version zu installieren: - A). pip install -Iv Paketname == Version B). pip install -v paketname == version

Für ein

Wenn Sie während der Installation die Option -I verwenden (wenn Sie nicht wissen, ob das Paket bereits installiert ist) (z. B. 'pip install -Iv pyreadline == 2. *' oder etwas anderes), würden Sie ein neues installieren separates Paket mit demselben vorhandenen Paket mit einer anderen Version.

Für B

  1. Zunächst möchten Sie vielleicht nach fehlerhaften Anforderungen suchen. pip check

2.und dann sehen, was bereits installiert ist von pip list

3. Wenn die Liste der Pakete ein Paket enthält, das Sie mit einer bestimmten Version installieren möchten, sollten Sie das Paket dieser Version zuerst deinstallieren, indem Sie pip uninstall Paketname

4.Und jetzt können Sie dasselbe Paket mit einer bestimmten Version erneut installieren, indem Sie __. pip install -v Paketname == Version Z. pip install -v pyreadline == 2. *

0
Samarth

Ich bin kürzlich auf ein Problem gestoßen, als ich das -I-Flag von pip verwendet habe, das ich irgendwo dokumentieren wollte:

-I wird not das vorhandene Paket deinstallieren, bevor Sie fortfahren. es wird es einfach über dem alten installieren. Dies bedeutet, dass alle Dateien, die zwischen den Versionen gelöscht werden sollen, stattdessen beibehalten werden. Dies kann zu einem merkwürdigen Verhalten führen, wenn diese Dateien Namen mit anderen installierten Modulen verwenden.

Angenommen, es gibt ein Paket mit dem Namen package. In einer der packages-Dateien verwenden sie import datetime. In [email protected] verweist dies nun auf das Standardbibliothek datetime-Modul, aber in [email protected] wurde ein lokaler datetime.py als Ersatz für die Standardbibliothekversion (aus welchem ​​Grund auch immer) hinzugefügt. 

Lassen Sie uns nun sagen, dass ich pip install package==3.0.0 ausführt, aber dann erst später feststellen, dass ich tatsächlich die Version 2.0.0 wollte. Wenn ich jetzt pip install -I package==2.0.0 ausführen, wird die alte datetime.py-Datei nicht entfernt, sodass alle Aufrufe von import datetime das falsche Modul importieren.

In meinem Fall manifestierte sich dies mit seltsamen Syntaxfehlern, da die neuere Version des Pakets eine Datei hinzufügte, die nur mit Python 3 kompatibel war. Als ich Paketversionen zur Unterstützung von Python 2 heruntergestuft hatte, fuhr ich mit dem Import des Python-3-only-Moduls fort.

Aus diesem Grund würde ich argumentieren, dass die Deinstallation des alten Pakets der Verwendung von -I beim Aktualisieren installierter Paketversionen immer vorzuziehen ist.

0
0x5453