867 Stimmen

Python und pip, alle Versionen eines Pakets auflisten, das verfügbar ist?

Mit dem Namen eines Python-Pakets, das mit pip Gibt es eine Möglichkeit, eine Liste aller möglichen Versionen herauszufinden, die pip installieren kann? Im Moment ist es Versuch und Irrtum.

Ich versuche, eine Version für eine Bibliothek eines Drittanbieters zu installieren, aber die neueste Version ist zu neu, es wurden rückwärts inkompatible Änderungen vorgenommen. Ich möchte also irgendwie eine Liste aller Versionen haben, die pip kennt, damit ich sie testen kann.

1455voto

Chris Montanaro Punkte 15382

Für pip >= 21.2 verwenden:

pip index versions pylibmc

Beachten Sie, dass dieser Befehl experimentell ist und sich in Zukunft ändern kann!

Für pip >= 21.1 verwenden:

pip install pylibmc==

Für pip >= 20.3 verwenden:

pip install --use-deprecated=legacy-resolver pylibmc==

Für pip >= 9.0 verwenden:

$ pip install pylibmc==
Collecting pylibmc==
  Could not find a version that satisfies the requirement pylibmc== (from 
  versions: 0.2, 0.3, 0.4, 0.5.1, 0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.5, 0.6.1, 0.6, 
  0.7.1, 0.7.2, 0.7.3, 0.7.4, 0.7, 0.8.1, 0.8.2, 0.8, 0.9.1, 0.9.2, 0.9, 
  1.0-alpha, 1.0-beta, 1.0, 1.1.1, 1.1, 1.2.0, 1.2.1, 1.2.2, 1.2.3, 1.3.0)
No matching distribution found for pylibmc==

Die verfügbaren Versionen werden gedruckt, ohne dass Pakete heruntergeladen oder installiert werden müssen.

Für pip < 9.0 verwenden:

pip install pylibmc==blork

donde blork kann eine beliebige Zeichenkette sein, die keine gültige Versionsnummer .

195voto

m000 Punkte 5644

(Update: Ab März 2020 haben viele Menschen berichtet, dass yolk, installiert über pip install yolk3k gibt nur die neueste Version zurück. Chris' Antwort scheint die meisten Bewertungen zu haben und hat bei mir funktioniert)

Das Skript bei pastebin funktioniert. Allerdings ist es nicht sehr praktisch, wenn Sie mit mehreren Umgebungen/Hosts arbeiten, da Sie es jedes Mal kopieren/erstellen müssen.

Eine bessere Allround-Lösung wäre die Verwendung von Dotter3k , das mit pip installiert werden kann. Z.B. um zu sehen, welche Versionen von Django verfügbar sind:

$ pip install yolk3k
$ yolk -V django
Django 1.3
Django 1.2.5
Django 1.2.4
Django 1.2.3
Django 1.2.2
Django 1.2.1
Django 1.2
Django 1.1.4
Django 1.1.3
Django 1.1.2
Django 1.0.4

yolk3k ist eine Abspaltung des ursprünglichen yolk die ihre Entwicklung im Jahr 2012 . Obwohl yolk wird nicht mehr gepflegt (wie in den Anmerkungen unten angegeben), yolk3k zu sein scheint und Python 3 unterstützt.

Nota: Ich bin nicht an der Entwicklung von yolk3k beteiligt. Wenn etwas nicht so zu funktionieren scheint, wie es sollte, sollte es keinen großen Unterschied machen, hier einen Kommentar zu hinterlassen. Verwenden Sie die yolk3k Fehlerverfolgung und erwägen Sie, wenn möglich eine Korrektur einzureichen.

116voto

eric chiang Punkte 2377

Sie brauchen kein Paket eines Drittanbieters, um diese Informationen zu erhalten. pypi bietet einfache JSON-Feeds für alle Pakete unter

https://pypi.org/pypi/{PKG_NAME}/json

Hier ist ein Python-Code, der nur die Standardbibliothek verwendet und alle Versionen abruft.

import json
import urllib2
from distutils.version import StrictVersion

def versions(package_name):
    url = "https://pypi.org/pypi/%s/json" % (package_name,)
    data = json.load(urllib2.urlopen(urllib2.Request(url)))
    versions = data["releases"].keys()
    versions.sort(key=StrictVersion)
    return versions

print "\n".join(versions("scikit-image"))

Dieser Code wird gedruckt (Stand: 23. Februar 2015):

0.7.2
0.8.0
0.8.1
0.8.2
0.9.0
0.9.1
0.9.2
0.9.3
0.10.0
0.10.1

67voto

HVNSweeting Punkte 2661

更新しました。
Seit September 2017 funktioniert diese Methode nicht mehr: --no-install wurde in Pip 7 entfernt

Utilisez pip install -v können Sie alle verfügbaren Versionen sehen

root@node7:~# pip install web.py -v
Downloading/unpacking web.py
  Using version 0.37 (newest of versions: 0.37, 0.36, 0.35, 0.34, 0.33, 0.33, 0.32, 0.31, 0.22, 0.2)
  Downloading web.py-0.37.tar.gz (90Kb): 90Kb downloaded
  Running setup.py egg_info for package web.py
    running egg_info
    creating pip-egg-info/web.py.egg-info

Um kein Paket zu installieren, verwenden Sie eine der folgenden Lösungen:

root@node7:~# pip install --no-deps --no-install flask -v                                                                                                      
Downloading/unpacking flask
  Using version 0.10.1 (newest of versions: 0.10.1, 0.10, 0.9, 0.8.1, 0.8, 0.7.2, 0.7.1, 0.7, 0.6.1, 0.6, 0.5.2, 0.5.1, 0.5, 0.4, 0.3.1, 0.3, 0.2, 0.1)
  Downloading Flask-0.10.1.tar.gz (544Kb): 544Kb downloaded

または

root@node7:~# cd $(mktemp -d)
root@node7:/tmp/tmp.c6H99cWD0g# pip install flask -d . -v
Downloading/unpacking flask
  Using version 0.10.1 (newest of versions: 0.10.1, 0.10, 0.9, 0.8.1, 0.8, 0.7.2, 0.7.1, 0.7, 0.6.1, 0.6, 0.5.2, 0.5.1, 0.5, 0.4, 0.3.1, 0.3, 0.2, 0.1)
  Downloading Flask-0.10.1.tar.gz (544Kb): 4.1Kb downloaded

Getestet mit pip 1.0

root@node7:~# pip --version
pip 1.0 from /usr/lib/python2.7/dist-packages (python 2.7)

39voto

Timofey Stolbov Punkte 4291

Ich habe ein ganz einfaches Bash-Skript entwickelt. Dank an jq ist der Autor.

#!/bin/bash
set -e

PACKAGE_JSON_URL="https://pypi.org/pypi/${1}/json"

curl -L -s "$PACKAGE_JSON_URL" | jq  -r '.releases | keys | .[]' | sort -V

更新しました。

  • Sortierung nach Versionsnummer hinzufügen.
  • hinzufügen -L um Weiterleitungen zu folgen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X