2013-12-13 13 views
7

Ví dụ sau đây được xây dựng với bin/buildout -NvvLàm thế nào để bạn biết trứng trăn nào đang thi hành hạn chế trong việc xây dựng?

... 
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 

Ràng buộc five.localsitemanager>2.0dev dường như không được thực thi bởi grokcore.annotation (xem https://github.com/zopefoundation/grokcore.annotation/blob/master/setup.py) Nhưng làm thế nào để tìm ra trứng là thực sự thực thi này?

+0

Sản phẩm vẫn có liên quan? Nếu không, có lẽ đã đến lúc đóng câu hỏi ... –

+0

Vấn đề vẫn thỉnh thoảng xảy ra, vì vậy câu hỏi có thể vẫn mở. Các gói thay đổi, nhưng vấn đề vẫn còn. –

+0

Kiểm tra câu trả lời của tôi cho http://stackoverflow.com/questions/29827258/find-requirement-specs-in-a-plone-buildout-setup (eggdeps) – sunew

Trả lời

6

Tôi biết đây là một câu hỏi rất cũ, nhưng tôi đã có cùng một vấn đề ngày hôm qua và my colleague tìm thấy một cách để giải quyết vấn đề. Vì vậy, tôi nghĩ tôi cũng có thể đăng nó ở đây.

Tất cả trứng xây dựng của bạn nằm trong thư mục eggs trong dự án của bạn hoặc trong thư mục .buildout trong thư mục chính của bạn, bao gồm trứng phát triển. Trong mỗi quả trứng bạn sẽ tìm thấy một tập tin requires.txt với các yêu cầu cho trứng. Điều này có nghĩa là bạn có thể thực hiện tìm/grep trên thư mục .buildout/eggs cho ràng buộc cụ thể để tìm ra gói nào đang thực thi nó.

Vì vậy, trong trường hợp của bạn tôi sẽ đề nghị bạn đi đến thư mục trứng (trong trường hợp của tôi ~/.buildout/eggs) và sau đó làm:

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

Điều đó sẽ tìm ra quả trứng đó là thực thi các hạn chế.

Trong trường hợp của tôi, tôi đã nâng cấp lên Django 1.7 và có một gói có ràng buộc 'Django >= 1.4, < 1.7'. Vì vậy, việc thực hiện find .|grep requires.txt|xargs grep 1.7 đã tìm thấy trứng có vấn đề.

+0

Ngoài ra: thư mục '~/.buildout/eggs /' chỉ được sử dụng nếu bạn bật nó. Nếu không, bạn phải tìm trong thư mục 'eggs /' bên trong thư mục dự án. –

+0

Nhận xét thứ hai: '<1,7' có thể có vấn đề vì nó cũng có thể được viết là' <1,7' (không có dấu cách) và như vậy. Tìm kiếm tên gói trong các tệp 'EGG-INFO/require.txt' khác nhau sẽ nhanh hơn. Một cái gì đó như 'tìm. | grep requires.txt | xargs grep -i the-package-name ' –

+1

Cảm ơn bạn đã thêm @ reinout-van-rees! Tôi chỉ cần nhìn vào '.bash_history' của tôi và đó thực sự là lệnh bạn đã sử dụng trong thư mục' .buildout/eggs' của tôi. Tôi đoán tôi đã không chú ý đủ gần ngày hôm qua. Tôi sẽ cập nhật câu trả lời của mình. – Heyl1

Các vấn đề liên quan