2015-08-31 15 views
37

erfüllt ich einige Python-Pakete in Ubuntu 12.04 bin der Installation der folgenden requirements.txt Datei:konnte keine Version finden, die die Anforderung <package>

numpy>=1.8.2,<2.0.0 
matplotlib>=1.3.1,<2.0.0 
scipy>=0.14.0,<1.0.0 
astroML>=0.2,<1.0 
scikit-learn>=0.14.1,<1.0.0 
rpy2>=2.4.3,<3.0.0 

und diese beiden Befehle:

$ pip install --download=/tmp -r requirements.txt 
$ pip install --user --no-index --find-links=/tmp -r requirements.txt 

(die der erste lädt die Pakete herunter und der zweite installiert sie).

Das Verfahren wird häufig mit dem Fehler gestoppt:

Could not find a version that satisfies the requirement <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2)) (from versions:) 
No matching distribution found for <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2)) 

die ich manuell mit fixer:

pip install --user <package> 

und dann wieder den zweiten pip install Befehl ausführen.

Aber das funktioniert nur für , dass bestimmtes Paket. Wenn ich den zweiten pip install Befehl erneut ausgeführt habe, wird der Prozess nun über ein weiteres erforderliches Paket geklopft und ich muss den Vorgang erneut wiederholen, dh: installiere das neue benötigte Paket manuell (mit dem obigen Befehl) und führe dann das zweite pip install aus Befehl.

Bisher musste ich six, pytz, nose manuell installieren, und jetzt beschweren sich über mock.

Gibt es eine Möglichkeit zu sagen pip automatisch alle erforderlichen Abhängigkeiten zu installieren, so muss ich es nicht manuell eins nach dem anderen tun?

Hinzufügen: Dies geschieht nur in Ubuntu 12.04 BTW. In Ubuntu 14.04 funktionieren die pip install Befehle, die auf die Datei requirements.txt angewendet werden, ohne Probleme.

+1

Manchmal Ihr Django-Projekt auf dem lokalen Gebräu Pakete abhängen. Überprüfen Sie, ob Sie diese installiert haben! – James111

Antwort

20

Dieser Ansatz (mit allen Abhängigkeiten in einem Verzeichnis und nicht von einem Index herunterladen) funktioniert nur, wenn das Verzeichnis alle Pakete enthält. Das Verzeichnis sollte daher alle Abhängigkeiten enthalten, aber auch alle Pakete, von denen diese Abhängigkeiten abhängen (z. B. six, pytz usw.).

Sie sollten daher diese manuell in requirements.txt (so dass der erste Schritt, um sie explizit herunterlädt) oder Sie sollten alle Pakete mit PyPI installieren und dann pip freeze > requirements.txt die Liste aller Pakete erforderlich zu speichern.

+0

Die einzige Möglichkeit, herauszufinden, welche * alle * Anforderungen erfüllt sind, ist das "Einfrieren" der installierten Pakete in einer Arbeitsumgebung und dann das Hinzufügen aller darin enthaltenen Dateien zur 'requirements.txt' Datei? – Gabriel

+2

@Gabriel: Derzeit werden ja so viele Python-Pakete installiert, indem eine 'setup.py'-Datei ausgeführt wird, die die Abhängigkeiten enthält, die sie benötigen. Dies sollte besser werden, sobald Python-Pakete zu Wheel-Dateien werden (http://pythonwheels.com), mit denen Sie eine Liste aller benötigten Pakete sammeln können, ohne willkürlichen Code in 'setup.py'-Dateien auszuführen. –

+0

Danke für die Erklärung Simeon. Noch eine Sache, wenn es Ihnen nichts ausmacht: Warum passiert das nicht in Ubuntu 14.04, aber in Ubuntu 12.04? – Gabriel

0

Versuchen Sie, den Kolben mithilfe des folgenden Befehls über die Powershell zu installieren.

>>pip install --isolated Flask 

Dies ermöglicht die Installation zur Vermeidung von Umgebungsvariablen und Benutzerkonfiguration.

0

might help

sudo pip installiert Rad == 0.29.0

+0

Entschuldigung .. Ich lese nicht Chinesisch oder andere asiatische Sprache .. Referral Link könnte in der Zukunft brechen ... bitte posten essentials hier. Wie geschrieben seine niedrige Qualität ohne Kontext. – ZF007