Without looking at this specific thing too closely, maybe it’s time for Django to gain a required dependency instead of bundling or reinventing everything?
Does anyone (potentially from OS packaging worlds maybe) have a good reason NOT to have a dependency?
In the event that Django does have Pip dependencies, I still think we should establish some rules. Things like they should be stable and mature, and perhaps widely known, and still be under active maintenance. These are all hazy ideas of course, but I think adding any new dependency should be something which we are cautious of, not something we do without careful consideration.
If someone can put together some documentation or a DEP for how this process would work, I think this is a matter significant enough to talk about properly, and in a thread more clearly named. Such a proposal should also ideally reference what we do or have vendored before, why, and how well of otherwise that process has worked.
Marc
--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.
To post to this group, send email to django-d...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/CALC3Kae1Mt5LzYRq0PQbQcEMKwvbK%2Begr4FuC6baB5NZZtSbtA%40mail.gmail.com.
The only problem I can see is dependencies conflicts, where Django would need package X version > 1.0 and another installed package would need package X version 0.9. I have this issue with a project of mine that required six >= 1.10 and for some reason Xcode on OSX with the system Python (ie. not installed with brew for example) forces you to have six 1.9, which comes before in the PYTHONPATH. I know that Lektor for example solves this by having an install script that creates a virtualenv and installs it inside this virtualenv. Also James mentioned that "back in the days pip wasn't as awesome as it is today", but we have to keep in mind that a lot of OSes still use an old pip version by default (Debian stable for example ships pip 1.5).
Anyway as long as Django is installed in a virtualenv this shouldn't be too much of an issue, but I think we should expect some issues from the users and these should be documented otherwise people might get frustrated.
Cheers,
Sylvain
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/CAMwjO1HqgJ%3DM93yWgmatZtc4s8%3DRB8FFfga24aJ3X_D_Ey2xdw%40mail.gmail.com.
On Apr 7, 2016, at 1:31 AM, Sylvain Fankhauser <sylvain.f...@gmail.com> wrote:The only problem I can see is dependencies conflicts, where Django would need package X version > 1.0 and another installed package would need package X version 0.9. I have this issue with a project of mine that required six >= 1.10 and for some reason Xcode on OSX with the system Python (ie. not installed with brew for example) forces you to have six 1.9, which comes before in the PYTHONPATH. I know that Lektor for example solves this by having an install script that creates a virtualenv and installs it inside this virtualenv.
Also James mentioned that "back in the days pip wasn't as awesome as it is today", but we have to keep in mind that a lot of OSes still use an old pip version by default (Debian stable for example ships pip 1.5).
Anyway as long as Django is installed in a virtualenv this shouldn't be too much of an issue, but I think we should expect some issues from the users and these should be documented otherwise people might get frustrated.
Cheers,
Sylvain
Hi,
> Anyway as long as Django is installed in a virtualenv this shouldn't be
> too much of an issue, but I think we should expect some issues from the
> users and these should be documented otherwise people might get
> frustrated.
It can still be an issue for things that share the same virtualenv with Django, i.e. Django apps and projects. Any library that Django depends on imposes a restriction on which version of this library user code can use.
For example, if Django requires `requests>=2.9,<3.0`, this means that Django-based apps and projects cannot use requests 3.0+ in their code (at least not easily).
For this reason, I believe that Django should be very conservative about introducing new dependencies, but maybe not outrule them completely.
--
René