将 requirements.txt 中的要求添加到 conda meta.yaml

Add requirements from requirements.txt to conda meta.yaml

我正在写一个 Python 包,我想在 pypi 和 conda 上发布。为了避免错误,我想将需求存储在一个文件中;至少在可预见的未来,他们是一样的。

从 meta.yaml 到 setup.py 很容易(例如通过 pyyaml),但是反过来呢?如何将需求注入 meta.yaml?

有没有类似的:

{% set data = load_setup_py_data() %}
...
requirements:
  run:
    {{ data.get('install_requires') }}

这种情况的最佳做法是什么?

对于一个神社新手来说很难弄清楚,但这很有效:

requirements:
  run:
    {% for req in data.get('install_requires', []) %}
      - {{ req }}
    {% endfor %}

令人惊讶的是很难弄清楚为什么 load_setup_py_data() 似乎在 conda-build 期间被调用了多次,有时它 return 是一个没有 install_requires 的空字典,所以.get 会 return 一个 None.