conda / conda-lock

Lightweight lockfile for conda environments
https://conda.github.io/conda-lock/
Other
492 stars 103 forks source link

[Feature Request] OS Specific Dependencies #134

Open alanhdu opened 2 years ago

alanhdu commented 2 years ago

When specifying my environment.yml file, I would like some way of specifying dependencies that only exist on a particular operating system (e.g. I might want to pin a particular version of pywine32 or pyobjc-core).

From browsing the docs, it doesn't look like there's a first-class way of doing this with conda-lock (although maybe there is and this is just a request for better documentation).

It looks like there's a feature request to solve this in upstream conda (xref xref https://github.com/conda/conda/issues/8089) by allowing # [linux] or # [osx] selectors that hasn't been implemented, but maybe there's a way for conda-lock to some kind of partial support (even if it's not the full selector) without solving the full issue?

stepanhruda commented 2 years ago

Bump to this - especially since 1.0 switched to a poetry resolver and started ignoring markers like platform_system in dependencies.pip, there is no way to define a multi-platform environment unless all packages exist on all platforms?

Looks like selector support is even implemented in environment file parsing, but explicitly disabled. Was there a problem with setting platform on Dependency objects when trying to resolve?

stepanhruda commented 2 years ago

I might be interested in adding in selector support, but I wonder if there are any issues I should be aware of - to save me from spending x hours and discovering them on my own

jason-ford-silicontx commented 2 years ago

Bump; I'm using conda-lock in conjunction with a pyproject.toml, and support for platform specific dependencies would be useful within the [tool.conda-lock.dependencies] section. I would be happy to make a PR to enable such a change using dictionary syntax equivalent to poetry dependencies.