1

要构建 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'
4

0 回答 0