2013-12-13 12 views
7

Zum Beispiel wird die folgende gebaut mit bin/buildout -NvvWoher weißt du, welches Python-Ei eine Beschränkung beim Buildout erzwingt?

... 
Getting required 'grokcore.component>=2.5' 
    required by five.grok 1.3.2. 
    required by grokcore.viewlet 1.11. 
Picked: grokcore.component = 2.5 
Getting required 'grokcore.annotation' 
    required by five.grok 1.3.2. 
Picked: grokcore.annotation = 1.3 
The constraint, 0.4, is not consistent with the requirement, 'five.localsitemanager>2.0dev'. 
While: 
    Installing instance. 
Error: Bad constraint 0.4 five.localsitemanager>2.0dev 

Die Einschränkung five.localsitemanager>2.0dev scheint nicht von grokcore.annotation (siehe https://github.com/zopefoundation/grokcore.annotation/blob/master/setup.py) erzwungen werden, aber wie finde ich heraus, welches Ei eigentlich diese erzwingt?

+0

Ist es noch relevant? Wenn nicht, vielleicht ist es Zeit, die Frage zu schließen ... –

+0

Das Problem tritt immer noch von Zeit zu Zeit auf, so dass die Frage offen bleiben kann. Die Pakete ändern sich, aber das Problem bleibt bestehen. –

+0

Überprüfen Sie meine Antwort zu http://stackoverflow.com/questions/29827258/find-requirement-specs-in-a-plone-buildout-setup (Eggdeps) – sunew

Antwort

6

Ich weiß, das ist eine sehr alte Frage, aber ich hatte gestern das gleiche Problem und my colleague einen Weg gefunden, um das Problem zu lösen. Also dachte ich, ich könnte es auch hier posten.

Alle Ihre Buildout-Eier sind entweder in einem eggs Ordner in Ihrem Projekt oder in einem .buildout Ordner in Ihrem Home-Ordner, einschließlich der Entwicklung Eier. In jedem Ei finden Sie eine requires.txt Datei mit den Anforderungen für das Ei. Dies bedeutet, dass Sie eine Suche/grep im Ordner .buildout/eggs für die spezifische Einschränkung durchführen können, um herauszufinden, welches Paket es erzwingt.

in Ihrem Fall also würde ich Sie auf die Eier Verzeichnis gehen vorschlagen (in meinem Fall ~/.buildout/eggs) und dann tun:

find .|grep requires.txt|xargs grep 2.0dev 

, dass das Ei finden sollte, dass die Einschränkung ist die Durchsetzung.

In meinem Fall habe ich auf Django 1.7 aktualisiert und es gab ein Paket mit der Einschränkung 'Django >= 1.4, < 1.7'. So fand find .|grep requires.txt|xargs grep 1.7 das problematische Ei.

+0

Ein Zusatz: der '~/.buildout/Eier /' Ordner wird nur verwendet, wenn Sie es aktivieren. Andernfalls müssen Sie im Ordner "eggs /" im Projektverzeichnis nachsehen. –

+0

Zweiter Kommentar: das '<1.7' kann problematisch sein, da es auch als' <1.7' geschrieben werden kann (ohne Leerzeichen) und so. Die Suche nach dem Paketnamen in den verschiedenen 'EGG-INFO/requires.txt' Dateien ist schneller. Etwas wie 'finden. | grep benötigt.txt | xargs grep -i the-package-name ' –

+1

Danke für die Ergänzungen @ reinout-van-rees! Ich habe gerade in meine '.bash_history' geschaut und das ist in der Tat der Befehl, den du in meinem' .buildout/eggs' Ordner benutzt hast. Ich schätze, ich habe gestern nicht genug aufgepasst. Ich werde meine Antwort aktualisieren. – Heyl1