In a requirements-*.in
file, at the top of the file, are lines with -c
and -r
flags followed by a requirements-*.in
file. Uses relative paths (ignoring URLs).
Say have docs/requirements-pip-tools.in
-r ../requirements/requirements-prod.in
-c ../requirements/requirements-pins-base.in
-c ../requirements/requirements-pins-cffi.in
...
The intent is compiling this would produce docs/requirements-pip-tool.txt
But there is confusion as to which flag to use. It's non-obvious.
constraint
Subset of requirements features. Intended to restrict package versions. Does not necessarily (might not) install the package!
Does not support:
Personal preference
-
always organize requirements files in folder(s)
-
don't prefix requirements files with requirements-
, just doing it here
-
DRY principle applies; split out constraints which are shared.
my personal preference is a pyproject.toml over that mess
But pyproject.toml supports neither locking nor constraints.
Ah true, I had the wrong idea about this constraints file. What's your use case?
My only use case so far has been fixing broken builds when a package has build-)ldependencies that don't actually work (e.g. a dependency of a dependency breaks stuff). Not super common, but it happens.