我正在编写一个要在pypi和conda上发布的Python包。为避免错误,我想将需求存储在一个文件中;至少在可预见的将来,它们是相同的。
从meta.yaml到setup.py(例如通过pyyaml)很容易,但是相反呢?如何将需求注入meta.yaml?
是否有类似的东西:
{% set data = load_setup_py_data() %}
...
requirements:
run:
{{ data.get('install_requires') }}
此方案的最佳实践是什么?
很难想出一个jinja noob,但这行得通:
requirements:
run:
{% for req in data.get('install_requires', []) %}
- {{ req }}
{% endfor %}
令人惊讶地很难理解为什么,但是load_setup_py_data()
在conda-build
期间似乎多次被调用,并且有时它返回一个空的dict而没有install_requires,因此.get
会返回一个None
。