conda构建如何使用子包

时间:2019-12-04 15:23:08

标签: python build conda conda-build

我正在尝试使用conda构建python软件包,但遇到了一些麻烦。

该软件包基本上是两个子软件包,目前,如果使用setuptools与python一起安装,它可以正常工作。我可以轻松地通过以下方式调用子包:

python -m my_package.the_subpackage

我真正的问题是,首先,我必须如何处理conda构建,才能将此转换为我的conda软件包。

其次,假设它与conda一起安装,该如何调用子软件包?是一样的还是my_package the_subpackage或类似的东西?

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您的第一个问题是,如果已经有了setup.py,如何为python创建conda软件包。答案很普遍,只需用谷歌搜索即可。 一种有用的参考:https://docs.conda.io/projects/conda-build/en/latest/user-guide/tutorials/build-pkgs.html

非常简短(不一定是通用的方式)是

conda install conda-build
mkdir conda-recipe && pushd conda-recipe
echo "python setup.py install --single-version-externally-managed" > build.sh
touch meta.yaml # populate meta.yaml with proper config. Something to start with: https://docs.conda.io/projects/conda-build/en/latest/_downloads/d42b166defebcb482accb83c6edec8c9/meta.yaml

# with <CWD> being your current working directory.
popd && conda-build <CWD>/conda-recipe -croot build --output-folder <CWD>/dist/conda 

对于第二个问题,请咨询https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#implicit-metapackages,一种方法是通过outputs配置定义不同的子包。

适合您的情况的配置:

package:
  name: my_package

requirements:
  host: 
   - python
  run:
    - my_package-the_subpackage1
    - my_package-the_subpackage2

outputs:
  - name: my_package.the_subpackage1
    requirements:
      - some-dep
    script: some_build_script.sh
  - name: my_package.the_subpackage2
    requirements:
      - some-other-dep
    script: some_other_build_script.sh

这将创建3个包装(2个子软件包和一个依赖于子软件包的父元软件包)。 要安装它们,您可以执行以下操作:

conda install my_package以获取全部信息 或

conda install my_package.the_subpackage1仅安装第一个子软件包。