meta.yaml
Conda build defines package recipes using the meta.yaml format.
Conda-lock will attempt to make an educated guess at the desired environment spec in a meta.yaml.
This is not guaranteed to work for complex recipes with many selectors and outputs or complex use of jinja templates.
For multi-output recipes, conda-lock will fuse all the dependencies together. If that doesn't work for your case fall back to specifying the specification as an environment.yml
{% set version = "1.0.5" %}
package:
name: foo
version: {{ version }}
build:
number: 0
script:
- export PYTHONUNBUFFERED=1 # [ppc64le]
- {{ PYTHON }} -m pip install --no-deps --ignore-installed .
skip: True # [py2k]
requirements:
build:
- {{ compiler('c') }}
- {{ compiler('cxx') }}
host:
- python
- pip
- cython >=0.28.2
- numpy
run:
- python
- {{ pin_compatible('numpy') }}
- python-dateutil >=2.6.1
- pytz >=2017.2
- zlib # [unix]
test:
requires:
- pytest
Categories
build
requirements are ignoredhost
andrun
dependencies are treated as maintest.requires
dependencies are treated as dev
By default conda-lock will include dev dependencies in the specification of the lock (if the files that the lock is being built from support them). This can be disabled easily
conda-lock --no-dev-dependencies --file meta.yaml
Preprocessing Selectors
You may use preprocessing selectors, but there are currently some limitations to be aware of:
- Only OS-specific selectors are currently supported. See Conda's [documentation][selectors] for the list of supported selectors. Selectors related to Python or Numpy versions are not supported
- conda-lock supports an additional unique selector osx64
. It is true if the platform is macOS and the Python architecture is 64-bit and uses x86.
- not
, and
, and or
clauses inside of selectors are not supported
- Comparison operators (==
, >
, <
, etc) are not supported
Extensions
Channel specification
Since a meta.yaml doesn't contain channel information we make use of the following extra
key to specify channels
extra:
channels:
- conda-forge
- defaults