4 ms·
I think he is referring to indirect dependencies
by zys5945 7y ago
I think he is referring to indirect dependencies
- thaumasiotes 7y ago>>> Why isn't there any builtin way to automatically define a lock file pip isn't actually part of Python proper.
- jnwatson 7y agoIt isn't part of the Python executable, but it is part of the standard distribution.
- icebraining 7y agoNowadays, a regular installation of CPython lets you run "python -m pip". It's quite part of it.
- thaumasiotes 7y agoYou can do that with any library. You can issue Django commands by running `python -m django`; that doesn't change the fact that Django is a completely separate project from Python.
- voodoochicken 7y agoYes, those are caught when using pip freeze.
- zys5945 7y ago> Yes, those are caught when using pip freeze. No they are not. Pip freeze does not resolve transitive dependencies, nor does pip know what to do if your transitive dependencies conflict with each another.
- yzmtf2008 7y ago>Pip freeze does not resolve transitive dependencies How? Doesn't pip freeze literally list all packages that's installed in the current environment besides basic toolings such as setuptools (and you could even instruct it to list those as well)?
- geofft 7y ago> Pip freeze does not resolve transitive dependencies I don't think this is correct: $ python3 -m venv /tmp/v $ /tmp/v/bin/pip install flask [...] Collecting MarkupSafe>=0.23 (from Jinja2>=2.10.1->flask) [...] $ /tmp/v/bin/pip freeze | grep MarkupSafe MarkupSafe==1.1.1 > nor does pip know what to do if your transitive dependencies conflict with each another This is true, but because Python exposes all libraries in a single namespace at runtime, there isn't actually anything reasonable to do if they genuinely conflict. You can't have both, say, MarkupSafe 1.1.1 and MarkupSafe 1.1.0 in PYTHONPATH and expect them to be both accessible. There's no way in an import statement to say which one you want. However, it's notable that pip runs into trouble in cases where transitive dependencies don't genuinely conflict, too. See https://github.com/pypa/pip/issues/988 https://github.com/pypa/pip/issues/988 - this is a bug / acknowledged deficiency, and there is work in progress towards fixing it.
- marmaduke 7y ago> There's no way in an import statement to say which one you want. This would be fixable with a sys path hook, were pip so inclined