Conda 频道#
Conda-build 支持标准 conda 频道 行为。
相同频道和包名称问题#
如果频道和包名称相同,如果使用短频道名称可能会遇到构建问题。
假设您的 Anaconda.org 用户名或组织名称是 example
。假设您创建了一个名为 example
的包,其文件布局类似于
setup.py
conda/meta.yaml
example/
如果您的构建依赖于频道中的其他一些包,您需要添加 -c example
,但是,以下代码
conda-build ./conda/ -c example
将出现以下错误消息(路径将不同)
requests.exceptions.HTTPError: 404 Client Error: None for url:
file:///path/to/your/local/example/noarch/repodata.json
[...]
The remote server could not find the noarch directory for the requested channel with
url: file:///path/to/your/local/example/noarch/repodata.json
[...]
As of conda 4.3, a valid channel must contain a `noarch/repodata.json` and
associated `noarch/repodata.json.bz2` file, even if `noarch/repodata.json`
is empty. please request that the channel administrator create
`noarch/repodata.json` and associated `noarch/repodata.json.bz2` files.
这是因为 conda-build 会将项目中的目录 ./example/
视为一个频道。这是 conda CI 服务器的设计使然,在构建之前,构建路径可能很长、很复杂,并且不可预测。
有几种方法可以解决此问题。
使用所需频道的 URL
conda-build ./conda/ -c https://conda.anaconda.org/example/
从 conda 食谱目录中运行构建
cd conda conda-build . -c example
使用标签规范解决方法
conda-build ./conda/ -c example/label/main从技术上讲,它与 -c example 相同,因为 main 是默认标签,但现在它不会错误地找到本地文件系统上的频道
example/label/main
。