• Reinout van Rees's avatar
    Recording where requirements come from to debug version conflicts · d0a7f1bf
    Reinout van Rees authored
    Before you'd get a simple output like:
    
        Installing django.
        While:
          Installing django.
        Error: The requirement ('Django>=1.7') is not allowed by your [versions] constraint (1.6.6)
    
    ... which would mean you'd have to grep in all your requirements'
    sub-requirements which package actually requires the offending "django>=1.7"
    
    With this change you'll get a much more helpful output right before the error:
    
        Installing django.
        version and requirements information containing django:
          [versions] constraint on django: 1.6.6
          Base installation request: 'sso', 'djangorecipe'
          Requirement of djangorecipe==1.10: Django
          Requirement of djangorecipe==1.10: zc.recipe.egg
          Requirement of djangorecipe==1.10: zc.buildout
          Requirement of sso: django-nose
          Requirement of sso: django-mama-cas
          Requirement of sso: django-debug-toolbar
          Requirement of sso: django-auth-ldap
          Requirement of sso: Django<1.7,>=1.4.2
          Requirement of lizard-auth-server: django-nose
          Requirement of lizard-auth-server: django-extensions
          Requirement of lizard-auth-server: Django<1.7,>=1.6
          Requirement of django-nose: Django>=1.2
          Requirement of django-nose: nose>=1.2.1
          Requirement of django-mama-cas: requests==1.1.0
          Requirement of django-debug-toolbar: sqlparse
          Requirement of django-debug-toolbar: Django>=1.7
          Requirement of django-auth-ldap: python-ldap>=2.0
          Requirement of django-auth-ldap: django>=1.1
          Requirement of translations: Django>=1.4
          Requirement of django-extensions: six>=1.2
        While:
          Installing django.
        Error: The requirement ('Django>=1.7') is not allowed by your [versions] constraint (1.6.6)
    
    This makes it much easier to spot the cause (in this case
    django-debug-toolbar).
    
    There *are* some unrelated packages in here because I'm doing a textual
    comparison. The advantage is that it is very robust. And extracting the right
    package name from requirements without messing things up is harder to get
    right and takes more code.
    d0a7f1bf
easy_install.py 52.5 KB