要构建 conda 包,需要 meta.yaml 文件,其中列出了包的名称、版本和入口点,并指定了如何构建包。
此外,它支持 yaml 文件的大部分部分基于 jinja2 的模板。
如何让它从 setup.py 文件加载包名称和入口点?
给定一个包含以下内容的 setup.py 文件:
#!/usr/bin/env python
"""The setup script."""
from setuptools import setup, find_packages
setup(
entry_points={
'console_scripts': [
'foo=foo.cli:main',
],
},
name='foo',
packages=find_packages(include=['foo', 'foo.*']),
)
还有一个 meta.yaml:
{% set data = load_setup_py_data() %}
name: "{{ data['name'] }}"
为什么包的 conda 构建失败:
Error: package/name missing in: '/path/to/conda.recipe/meta.yaml'
或者对于 meta.yaml 的:
entry_points:
- "{{ data['entry_points']['console_scripts'] }}"
fail with:
conda_build/build.py", line 1217, in get_entry_point_script_names
cmd = entry_point[:entry_point.find("=")].strip()
AttributeError: 'NoneType' object has no attribute 'find'