创建多个版本的conda包

19 投票
2 回答
4305 浏览
提问于 2025-04-18 07:03

我有一个非常简单的纯Python包,已经在PyPI上发布了,我想把它也放到binstar上。这个包支持Python 2.6及以上版本和3.2及以上版本,而且只有一套代码。我还希望它在Windows和Unix系统上都能正常工作。

有没有简单的方法可以全面构建我的包,并将其上传到binstar,以支持多个Python版本呢?

我尝试过按照这篇文章的建议,简单地使用conda skeleton pypi。我想在多个不同版本上重复这个过程。

2 个回答

0

对于可以在任何Python版本上运行的纯Python包,你可以在配方中使用 noarch: python 这种写法。
比如说:

requirements:
  build:
    - python
    - setuptools

  run:
    - python

build:
  noarch: python
  script: python setup.py install --single-version-externally-managed --record=record.txt

这是conda-build文档的链接: https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#architecture-independent-packages

20

如果你想为不同版本的软件包创建配方,可以在运行 conda skeleton pypi 时使用 --version 这个选项。我建议用 package-version 作为配方的命名规则。

如果你想为多个不同的Python版本构建同一个软件包,可以在运行 conda build 时使用 --py 这个选项,比如 conda build --py 3.4 recipe。这个选项可以多次使用,比如 conda build --py 3.3 --py 3.4 recipe,或者你也可以用 --py all 来同时构建针对Python 2.6、2.7、3.3和3.4的版本。

要把软件包转换到其他平台,可以使用 conda convert(查看 conda convert -h 获取用法;记得运行 conda update conda-build,因为最近API有些小变化)。

最简单的上传到binstar的方法是运行 conda config --set binstar_upload yes。这样一来,当 conda buildconda convert 完成后,它们会自动把软件包上传到binstar。

撰写回答